在我的Entity类中有dateCreated和dateUpdated等字段。要自动更新这些字段,我使用@PrePersist和dateUpdated字段使用@PreUpdate注释dateCreated字段。它为我解决了。在创建新实体时,dateCreated字段会更新,但在更新实体时,dateCreated字段将变为null,并且dateUpdated字段将更新。谁能告诉你为什么会这样?
我正在使用Hibernate 4.3.6版本和JPA 2.0
答案 0 :(得分:0)
下面的注释(@PrePersist,@ PreUpdate)会导致在数据库插入或更新之前调用它们下面的方法,以使这些字段保持同步。我将它们放在BaseEntity上,然后在我的所有实体上扩展BaseEntity。
@PrePersist
protected void onCreation()
{
dateCreated = Instant.now();
dateUpdated = Instant.now();
}
@PreUpdate
protected void onUpdate()
{
dateUpdated = Instant.now();
}
以上假设您使用的是java.Instant,但如果您使用的是java.Date,则可以使用以下内容:
@PrePersist
protected void onCreation()
{
dateCreated = new Date();
dateUpdated = new Date();
}
@PreUpdate
protected void onUpdate()
{
dateUpdated = new Date();
}