【发布时间】:2020-10-20 20:47:55
【问题描述】:
我试图在执行保存之前捕获数据库中的实体数据,以创建卷影副本。
我在我的 Spring 应用程序中实现了以下EntityListener:
public class CmsListener {
public CmsListener() {
}
@PreUpdate
private void createShadow(CmsModel entity) {
EntityManager em = BeanUtility.getBean(EntityManager.class);
CmsModel p = em.find(entity.getClass(), entity.getId());
System.out.println(entity);
}
}
entity 确实包含要保存的实体对象,然后我使用另一个工具注入 EntityManager,它工作正常 - 但由于某种原因,实体已经保存到数据库中。 CmsModel p = em.find(...) 的输出结果与 entity 中的数据相同。
为什么 JPA/hibernate 在调用 @PreUpdate 之前保留更改?我怎样才能防止这种情况发生?
【问题讨论】:
标签: java spring-boot hibernate jpa persistence