Java 比较当前实体和以前的实体

Java 比较当前实体和以前的实体,java,hibernate,spring-data-jpa,spring-data,Java,Hibernate,Spring Data Jpa,Spring Data,我正在使用Spring数据和hibernate 我想比较新的值,但作为方法param传递的对象与我从DB获得的对象相同。 对于我的实体,我创建了一个侦听器 @EntityListeners(MyListener.class) public class MyClass{ 我的侦听器有hot@PreUpdate方法 @PreUpdate private void beforeAnyUpdate(MyClass newMyClass) { MyClassRepo repo = (MyCla

我正在使用Spring数据和hibernate

我想比较新的值,但作为方法param传递的对象与我从DB获得的对象相同。 对于我的实体,我创建了一个侦听器

@EntityListeners(MyListener.class)
public class MyClass{
我的侦听器有hot@PreUpdate方法

@PreUpdate
private void beforeAnyUpdate(MyClass newMyClass) {
     MyClassRepo repo = (MyClassRepo )
            BeanUtility.getBean("myClassRepo");
    Optional<MyClass > previousEntity= repo .findById(newMyClass.getId());



    System.out.println("previous : " + newMyClass.toString());
    System.out.println("current : " + previousEntity.get().toString());

不知道其中一个会发生什么,有人能告诉我如何获取这两个对象吗?

无论您处于哪个生命周期。您不能以这种方式访问“以前的值”,因为只有一个对象与该id的实体管理器关联。如果要访问以前的状态,您可以使用Hibernate拦截器,并提供一个自定义的
onFlushDirty
方法,从中可以访问以前和当前的状态。

如何注册此类拦截器?我在任何地方都找不到它,唯一的信息包含“HandlerInterceptor”,而我创建了hibernate interceptor,它扩展了EmptyInterceptor。网上有很多关于这方面的文章。例如,这里的这个:
previous : MyClass(id=1, variable1=test, variable2=test change)
current : MyClass(id=1, variable1=test, variable2=test change)