我有以下数据库列:
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
在hibernate中使用以下映射:
@Temporal(TemporalType.TIMESTAMP)
@Column(name="last_modified", nullable=false, length=19)
public Date getLastModified() {
return this.lastModified;
}
这已经好几个月了,但突然间我突然发现以下错误:
javax.persistence.PersistenceException:org.hibernate.PropertyValueException:not-null属性引用null或transient值:com.fs.model.BrowserHistory.lastModified
所以我想知道,为什么会突然发生这种情况?如果我将lastModified字段设置为可为空可以吗?
答案 0 :(得分:0)
看起来您想要记录修改时间戳。要避免手动设置(或不设置它并获取错误),您可以使用生命周期回调:
@PrePersist
public void updateTimestamps() {
lastModified = new Date();
}
答案 1 :(得分:0)
我发现数据库生成的列需要一些特定的注释:
@Column(name="last_modified", nullable=false, length=19, insertable=false, updatable=false)
@Generated(GenerationTime.ALWAYS)
我们现在正在尝试这个,但我认为它将解决这个问题。