java获取@postpdate中的@PreUpdate值
我需要在@PostUpdate中获取保存(@PreUpdate)之前的对象值(preUpdateOrder)
例如,@PreUpdatepreUpdateOrder的值为5,我需要在@PostUpdate中访问preUpdateOrder时获取值5,其中postUpdateOrder为6
这是我的密码
public class AuditListener {
private Order preUpdateOrder = new Order();
private Order postUpdateOrder = new Order();
@PreUpdate
private void before(Object object) {
if (object instanceof Order) {
preUpdateOrder = ((Order) object);
}
}
@PostUpdate
private void after(Object object) {
if (object instanceof Order) {
postUpdateOrder = ((Order) object);
if(preUpdateOrder.getId().equals(postUpdateOrder.getId())){
System.out.println("true");
}
}
}
}
@EntityListeners(AuditListener.class)
@Entity
public class Order{
}
# 1 楼答案
JPA实体侦听器非常有限。没有办法恢复旧的状态
您应该使用Hibernates拦截器功能。很容易定义拦截器:
然后必须在应用程序中设置hibernate属性。特性:
请在正式文件中找到更多信息:https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#events