gpt4 book ai didi

java - 使用 @PrePersist 和 @PreUpdate 时,创建的日期字段在更新时变为空

转载 作者:太空宇宙 更新时间:2023-11-04 10:49:13 24 4
gpt4 key购买 nike

在我的实体类中,有诸如 dateCreated 和 dateUpdated 之类的字段。为了自动更新这些字段,我使用 @PrePersist 注释了 dateCreated 字段,并使用 @PreUpdate 注释了 dateUpdated 字段。这对我来说很有效。创建新实体时,dateCreated 字段会更新,但在更新实体时,dateCreated 字段会变为空,并且 dateUpdated 字段会更新。谁能告诉我为什么会发生这种情况吗?

我使用的是 Hibernate 4.3.6 版本和 JPA 2.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();
}

关于java - 使用 @PrePersist 和 @PreUpdate 时,创建的日期字段在更新时变为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48025754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com