Java EntityManager合并和@PrePersist

时间:2012-07-06 09:46:49

标签: java entity entitymanager

我用这条线合并:

partner = em.merge(partner);

这是我的实体:

@PrePersist
public void updateModificationDate(){
    this.lastModificationDate = new Date();
}

正如您所看到的,我希望在最后一次更改实体时保持警惕,

但该方法永远不会被调用,

有人知道我能做些什么吗?

3 个答案:

答案 0 :(得分:2)

您可以向您的实体添加以下注释:

@EntityListeners(SaveOrUpdateDateListener.class)

实际上听众会是:

public class SaveOrUpdateDateListener {

    @PrePersist
    @PreUpdate
    public void setDate(final CertApplication entity) {
        final Date now = new Date();
        entity.setUpdated(now);
    }
}

答案 1 :(得分:1)

您可以阅读this并了解为什么不会调用prepersist。另外我认为你可以使用@Version注释来保持实体的最后修改日期。

答案 2 :(得分:0)

尝试强制使用em.flush(),但我不太确定强制刷新是否是一种好习惯。