Abd*_* AK 5 java hibernate jpa 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;
}
}
Run Code Online (Sandbox Code Playgroud)
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");
}
}
Run Code Online (Sandbox Code Playgroud)
MyListener 类中的 onPostPersist() 方法将在 MyClass 实例字段发生更改时被调用。
是否有可能发现由于特定字段更改而调用了该方法?
例如: 如果我单独更改名称字段,我应该能够发现名称字段在上次持久化中已更改。
一种通过与审计进行比较来检查的方法。
我想知道是否有其他方法。
谢谢
您所描述的内容仅对更新事件有意义。您可以注册一个拦截器并监听被重写方法的变化onFlushDirty:
onFlushDirty(Object entity,
Serializable id,
Object[] currentState,
Object[] previousState,
String[] propertyNames,
Type[] types)
Run Code Online (Sandbox Code Playgroud)
这里有先前和当前状态的数组以及属性数组,因此您可以轻松找出更改的内容。
| 归档时间: |
|
| 查看次数: |
4219 次 |
| 最近记录: |