gpt4 book ai didi

java - 如何查找在@EntityListeners 调用期间更改了哪些字段

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:55:46 24 4
gpt4 key购买 nike

假设我有这个类(class):

@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 实例字段发生变化时被调用。

是否有可能发现这个方法是因为特定字段的变化而被调用的?

例如:如果我单独更改名称字段,我应该能够在最后一次持久化中发现名称字段已被更改。

一种通过与审计比较来检查的方法。

如果可用,我想知道更改方法。

谢谢

最佳答案

您所描述的内容仅对更新事件有意义。您可以注册一个 interceptor并监听重写的 onFlushDirty 方法中的变化:

onFlushDirty(Object entity,
Serializable id,
Object[] currentState,
Object[] previousState,
String[] propertyNames,
Type[] types)

这里有以前和当前状态的数组以及属性数组,因此您可以轻松找出发生了什么变化。

关于java - 如何查找在@EntityListeners 调用期间更改了哪些字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35038859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com