我正在使用openjpa和oracle sql developer。在其中一个表中,我有审计字段,用于存储创建行的时间戳和后续更新时间。以下是我尝试过的事情:
将列默认标记为CURRENT_TIMESTAMP,并在模型中使用insertable as false。这会在插入行时创建时间戳,但在更新时会更新所有0值的时间,日期值保持不变。
对时间戳使用@Temporal注释,类型为java.util.Date。这只存储了日期而没有时间戳。将列数据类型更改为时间戳,并将所有0值存储在时间戳中,并显示当前日期:02-MAY-14 12.00.00.000000000 AM
我删除了@Temporal并将模型中的类型更改为java.sql.timestamp。行为与上述相同。
型号:
@Column(name = "LAST_UPDATE_DATE", nullable = false)
private Timestamp lastUpdateDate;
public Timestamp getLastUpdateDate() {
return this.lastUpdateDate;
}
public void setLastUpdateDate(Timestamp lastUpdateDate) {
this.lastUpdateDate = lastUpdateDate;
}
我在创建过程中设置的值是:
this.setLastUpdateDate(new Timestamp(new Date()。getTime()));
我搜索了同样的东西并尝试了所有的建议但不知何故它不适合我。 db中的数据类型是Timestamp。
任何人都使用openjpa并遇到同样的问题?有任何想法解决这个问题,除了在数据库中将数据类型转换为String或long,并相应地存储该值。