Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA事件侦听器不工作_Java_Spring_Hibernate_Jpa - Fatal编程技术网

Java JPA事件侦听器不工作

Java JPA事件侦听器不工作,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我使用SpringBoot,运行v1.5.1.RELEASE和Springv4.3.6.RELEASE。我试图对我的JPA事件监听器稍微聪明一点,但它不起作用 我的实体看起来像这样 @Entity @EntityListeners({MyEntityListener.class}) public class Entity extends SomeOtherEntity implements SomeInterfaceForAudit { } public class MyEntityListe

我使用SpringBoot,运行v1.5.1.RELEASE和Springv4.3.6.RELEASE。我试图对我的JPA事件监听器稍微聪明一点,但它不起作用

我的实体看起来像这样

@Entity
@EntityListeners({MyEntityListener.class})
public class Entity extends SomeOtherEntity implements SomeInterfaceForAudit {
}
public class MyEntityListener extends EntityListener<SchoolAdmin> {

// some other useful things in here...

}
我的EventListener类如下所示

@Entity
@EntityListeners({MyEntityListener.class})
public class Entity extends SomeOtherEntity implements SomeInterfaceForAudit {
}
public class MyEntityListener extends EntityListener<SchoolAdmin> {

// some other useful things in here...

}
公共类MyEntityListener扩展了EntityListener{
//这里还有一些其他有用的东西。。。
}
我的“聪明”在于我试图像这样“概括”整个听众

公共抽象类EntityListener{

   public abstract class EntityListener<T> {

        private Logger logger = LoggerFactory.getLogger(this.getClass());

        @PostUpdate
        @PostConstruct
        @PostRemove
        public void queueForIndex(T entity) {
            logger.info("queueForIndex " + entity.toString());
        }
    }
}
公共抽象类EntityListener{
私有记录器Logger=LoggerFactory.getLogger(this.getClass());
@假想
@施工后
@移除后
公共无效队列索引(T实体){
logger.info(“queueForIndex”+entity.toString());
}
}
}
没有进行日志记录。我尝试在实体类中创建这样的方法

@PostUpdate
public void reIndex() {
    System.out.println("--- post update-- ---- -<<<--- " + entity);
} 
@postpdate
public void reIndex(){

System.out.println("---更新后----如果您查看官方文档,对于jpa实体生命周期回调注释,您将看到那里没有
@Inherited
注释。此元注释导致注释从超类继承。因为它不在这些回调方法注释中,子类将不知道它们的存在MyEntityListener.class正是在这种情况下,通过继承获取queueForIndex(T entity)方法,作为一个普通方法,而不是实体生命周期回调方法

仅显示一个作为示例参考:


如果您查看官方文档,对于jpa实体生命周期回调注释,您将看到那里没有
@继承的
注释。此元注释导致注释从超类继承。因为它不在这些回调方法注释中,子类将不知道它们在超类中的存在。Exactl在您的案例中,MyEntityListener.class将通过继承获取queueForIndex(T entity)方法,作为普通方法,而不是实体生命周期回调方法

仅显示一个作为示例参考:


我认为这个解释不正确:在我看来,这个问题似乎与
@EntityListeners()
注释有关。我认为这个解释不正确:在我看来,这个问题似乎与
@EntityListeners()
注释有关。