当前位置: 首页 > 知识库问答 >
问题:

创建表时出现JPA/EclipseLink错误

那绪
2023-03-14

我正在尝试使用EclipseLink创建一个表。正在使用的java类是:-

import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Id;

@Entity
public class Submissions {

 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 private Long Id;
 private String XID;
 private String Y;
 @Temporal(TemporalType.DATE)
 private Date uDate;
 private String level;
 private String state;

 public Submissions() {
 }

 //All Relevant getter and setter functions
}
<persistence-unit name="SubmissionIds">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>com.obp.selenium.DataObjects.OriginationSubmissions</class>
    <properties>

        <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver" />
        <property name="javax.persistence.jdbc.url"
            value="jdbc:oracle:thin:@localhost:1521:orcl" />
        <property name="javax.persistence.jdbc.user" value="------" />
        <property name="javax.persistence.jdbc.password" value="------" />

        <!-- EclipseLink should create the database schema automatically -->
        <property name="eclipselink.ddl-generation" value="create-tables" />
        <property name="eclipselink.ddl-generation.output-mode"
            value="database" />
        <!-- <property name="eclipselink.canonicalmodel.subpackage"
            value="originationSubmissions" /> -->
    </properties>
</persistence-unit>
EntityManagerFactory factory = Persistence.createEntityManagerFactory("SubmissionIds");
    EntityManager em = factory.createEntityManager();
    em.getTransaction().begin();
    em.getTransaction().commit();
    em.close();

EL警告]:2017-04-07 14:04:53.768--ServerSession(1650327539)--异常[EclipseLink-4002](Eclipse持久性服务-2.6.3.v20160428-59C81C5):org.Eclipse.Persistence.exceptions.DatabaseException内部异常:java.sql.sqlsyntaxerrorexception:ora-00904::无效标识符

错误代码:904调用:CREATE TABLE SUBMISSIONS(ID NUMBER(19)NOT NULL,XID VARCHAR2(255)NULL,YVarchar2(255)NULL,LEVEL VARCHAR2(255)NULL,STATE VARCHAR2(255)NULL,UDATE DATE NULL,PRIMARY KEY(ID))查询:DataModifyQuery(sql=“CREATE TABLE SUBMISSIONS(ID NUMBER(19)NOT NULL,XID VARCHAR2(255)NULL,YVarchar2(255)NULL,LEVEL VARCHAR2(255)NULL,LEVEL

共有1个答案

锺离明煦
2023-03-14

实际上,Eclipse报告了一个bug,当使用保留词时会出现这个bug,您可以在这里进行处理:
https://bugs.Eclipse.org/bugs/show_bug.cgi?id=260637。

问题来自于使用一个保留词我实际上不知道您的DBMS,如果它是Mysql,您的属性XID和LEVEL是一个保留词。您可以在这里找到mysql保留字:https://dev.mysql.com/doc/refman/5.7/en/keywords.html。

您还可以从用于构建表的sql代码中发现有一个类型为DATE的列名更新

UDATE日期为空

所以依我之见,你也需要注意你在uDate上的名字

 类似资料:
  • person.java PersonRepository.java PersonService.java PersonController.java MyWebInitializer.java WebConfig.java rootconfig.java Build.Gradle 构建此项目时没有错误,但当我尝试运行此应用程序时,控制台显示错误: 错误org.springframework.web

  • 我正在用MySQL数据库构建一个django应用程序。当我第一次运行“Python Manage.py Migrate”时,一些表创建得很好,然后出现一些错误。引出的错误是: 完整的回溯是:

  • 问题内容: 我在Docker容器中有一个MySQL数据库。入口点执行创建数据库的脚本和创建表的脚本。 除了一张桌子,其他所有东西都工作正常。 记录到控制台的错误是 第150行是后面的开括号 MySQL版本:8.0.3-rc-log 主机操作系统:Debian jessie 我开始考虑并且可能是保留关键字,因此我重命名了表和列,但错误仍然存​​在。 问题答案: @Bill Karwin在第一条评论中

  • 我想创建一个在MySQL中拥有自己数据库所有权限的用户。 当我使用这个用户创建一个表时,MySQL返回SQL server正在使用只读选项运行。 但是,当我改变到另一个现有用户的所有权限上,我可以创建表没有错误。 我想知道只读选项是全局的还是什么? 以下是我使用MySQL root的MySQL命令: 然后我切换到用户"demo": 所以我检查了只读选项,它似乎是打开的。 然而,我尝试使用另一个用户

  • 我希望在一个简单的Java Swing应用程序中结合EclipseLink(2.4.0)和SQLite3.7.2使用JPA2.0。 我遇到的第一件事是,EclipseLink不支持SQLite。以下是输出: [EL Info]:2012-09-18 18:05:42.246--ServerSession(31125695)--Eclipselink,版本:Eclipse Persistence S

  • 我的logcat消息: (1)near“INTEGER”:CREATE_SQL android.database.sqlite.sqliteexception中的语法错误异常:编译时:create BOMUL_PLACE(_id INTEGER NOT NULL主键auticrement,NAME TEXT,LAT DOUBLE,LNG DOUBLE,CHECK INTEGER DEFAULT 0