为什么在数据库中插入JPA null

时间:2018-06-12 11:53:07

标签: java jpa websphere

我有一张包含最后修改日期的表格。我想在我的程序中手动设置它。奇怪的是,JPA正确读取对象并且日期存在,因此实际上不可能出现列错误。但是,当我现在创建一个新对象时,会出现一条错误消息,表明JPA无法将NULL写入LastChange Date字段。(在EntityManager的persist()之前,我检查了日期是否为NULL且是否存在) 我使用WAS 9.0和默认Eclipselink与JPA 2.1

在我的Testfall类中:

@Column(Name="LetztesAenderungsdatum",insertable=true,updateable=true)
private java.sql.Date letztesAenderungsdatum

表架构

    CREATE TABLE Test
    (
        Testfall_Id             INT (7),
        LetztesAenderungsdatum  DATE NOT NULL,
        Name                    VARCHAR (25) NOT NULL,
        Verfahren_FK    INT CONSTRAINT Verfahren_FK REFERENCES 
        Verfahren(VERFAHREN_ID),
        CONSTRAINT testfall_Id PRIMARY KEY(Testfall_Id)
    );
在堆栈跟踪日期的Sysout之前

: [12.06.18 13:45:14:415 CEST] 0000009f SystemOut O Testfall letztes Aenderungsdatum:2018-06-12

堆栈跟踪:

    [12.06.18 13:45:25:289 CEST] 0000009f eclipselink   W   [eclipselink] Ausnahme [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.WAS-v20170717-04d37b5): org.eclipse.persistence.exceptions.DatabaseException
Interne Ausnahme: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: Einfügen von NULL in ("SCHEMA"."TESTFALL"."LETZTESAENDERUNGSDATUM") nicht möglich

Fehlercode: 1400
Aufruf: INSERT INTO SCHEMA.Testfall (Testfall_Id, Beschreibung, LetztesAenderungsdatum, Name, Verfahren_FK) VALUES (?, ?, ?, ?, ?)
    bind => [5 parameters bound]
Abfrage: InsertObjectQuery(myPackage.beans.Testfall@bcd7e11c)

1 个答案:

答案 0 :(得分:0)

您没有在之前设置日期,{/ 1}}。您还可以在注释映射中包含persist

你可能想要做的是这样的事情:

nullable = false