java如何查找@EntityListeners调用期间更改的字段
假设我有一门课:
@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;
}
}
MyListener类将如下所示:
public class MyListener {
private static final Logger log = Logger.getLogger(MyListener.class.getName());
public MyListener() {
}
@PostPersist
@PostUpdate
@PostRemove
public void onPostPersist(MyClass object) {
log.fine("Firing changed entity event");
}
}
MyListener类中的onPostPersist()方法将在MyClass实例字段更改时被调用
是否可能发现由于特定字段的更改而调用了此方法
例如: 如果我单独更改了名称字段,我应该能够找到上次更改的名称字段
检查的一种方法是与审计进行比较
我想知道改变方法是否可行
谢谢
# 1 楼答案
您所描述的内容仅适用于更新事件。您可以注册一个interceptor并监听被重写的
onFlushDirty
方法中的更改:这里有以前和当前状态的数组,以及属性数组,因此可以很容易地找出发生了什么变化