有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带Eclipselink的java Oracle 12c标识列

我在Oracle12c数据库中有一个定义为MSG_ID NUMBER(24, 0) GENERATED BY DEFAULT ON NULL AS IDENTITY NOT NULL的列。我正试图使用Eclipselink 2.6.2将多条记录插入到它的表中

这是我的实体类:

    @Entity
    @Table(name = "MY_TABLE", catalog = "", schema = "MYSCHEMA")
    @XmlRootElement
    @PrimaryKey(validation = IdValidation.NULL)
    public class MyTable implements Serializable {

        private static final long serialVersionUID = 1L;

        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Basic(optional = false)
        @Column(name = "MSG_ID")
        private Long msgId;
        @Basic(optional = false)
        @Column(name = "MSG")
        private String msg;
        @Basic(optional = false)
        @Column(name = "SENDER")
        private String sender;

        // Getters and setters...
    }

创建循环以在表中插入多条记录时,会出现以下异常:

--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.2.v20151217-774c696): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

Error Code: 942
Call: UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?
    bind => [2 parameters bound]
Query: DataModifyQuery(name="SEQUENCE" sql="UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?")

然后,一个java.lang.IllegalArgumentException: An instance of a null PK has been incorrectly provided for this find operation随之出现。因为ID不是由表生成的,并且没有处理ID生成的序列

这是Eclipselink中的错误还是我在代码中犯的错误


共 (0) 个答案