获取对象字段上一个值休眠 JPA
2022-09-01 20:58:45
让我们假设我有这个类:
@EntityListeners({MyListener.class})
class MyClass {
String name;
String surname;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return name;
}
public void setSurname(String name) {
this.name = name;
}
public void save() {
JPA.em().persist(this);
return this;
}
public void update() {
JPA.em().merge(this);
}
public static MyClass findById(Long id) {
return JPA.em().find(MyClass.class, id);
}
}
现在,在我的课程中,我试图找出以前的值实例与即将保存(更新)到数据库的新值。我用preupdate metdhod来做这件事:MyListener
MyClass
@PreUpdate
public void preUpdate(Object entity) {
...some logic here...unable to get the old object value in here
}
所以假设我有一个带有名字和姓氏的对象实例:MyClass
MyClass mycls = new MyClass();
mycls.setName("Bob");
mycls.setSurname("Dylan");
mycls.save();
这没有被监听者拾取,这没关系,因为我只听更新。现在,如果我像这样更新这个实例:
MyClass cls = MyClass.findById(someLongId)
cls.setSurname("Marley");
cls.update();
因此,这会触发 mylistener 中的方法,当我尝试:preUpdate
MyClass.findById(someLongId);
当我调试时,我已经得到了新更新的实例,但更新尚未发生,因为当我签入列姓氏中的数据库时,它仍然是。Dylan
如何从方法中的数据库获取值,而不是从我刚刚更新的值中获取值?preUpdate