最佳答案
在我的 SQL Server 2000数据库中,有一个时间戳(函数类型不是数据类型)类型为 DATETIME
的列,名为 lastTouched
,设置为 getdate()
作为其默认值/绑定。
我正在使用 Netbeans 6.5生成的 JPA 实体类,并且在我的代码中有这个类
@Basic(optional = false)
@Column(name = "LastTouched")
@Temporal(TemporalType.TIMESTAMP)
private Date lastTouched;
但是,当我试图将对象放入数据库时,
javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.generic.Stuff.lastTouched
我已经尝试将 @Basic
设置为 (optional = true)
,但是这抛出了一个异常,即数据库不允许 TIMESTAMP
列使用 null
值,这是设计上不允许的。
ERROR JDBCExceptionReporter - Cannot insert the value NULL into column 'LastTouched', table 'DatabaseName.dbo.Stuff'; column does not allow nulls. INSERT fails.
我以前在纯 Hibernate 中使用过这种方法,但后来我转到了 JPA,不知道如何告诉它这个列应该是在数据库端生成的。注意,我仍然使用 Hibernate 作为我的 JPA 持久层。