【问题标题】:Implement JPA Default Listener without XML configuration在没有 XML 配置的情况下实现 JPA 默认侦听器
【发布时间】:2016-07-26 20:23:09
【问题描述】:

我正在尝试在 JPA 实体上实现 默认侦听器。我读过几篇文章,所有文章都提到:

目前,只能在映射 XML 中指定默认侦听器 文件,因为没有等效的注释

我们是否有任何解决方法可以在不使用 XML 文件的情况下实现 默认侦听器

使用:Spring Boot、Spring Data JPA -(Java 配置)

【问题讨论】:

    标签: java spring jpa spring-boot jpa-2.1


    【解决方案1】:

    您可以通过这种方式将您的侦听器添加到您的实体主体中:

    @Entity
     public class MyEntity{
          //attributes & getters and setters
    
          @PrePersist void onPrePersist() {}
            @PostPersist void onPostPersist() {}
            @PostLoad void onPostLoad() {}
            @PreUpdate void onPreUpdate() {}
            @PostUpdate void onPostUpdate() {}
            @PreRemove void onPreRemove() {}
            @PostRemove void onPostRemove() {}
      }
    

    这样使用@EntityListeners注解:

      @Entity
      @EntityListeners({MyListener1.class, MyListener2.class})
      public class MyEntity {
    
      }  
    

    还有:

    public class MyListener1 { @PrePersist void onPrePersist(Object o) {} @PostPersist void onPostPersist(Object o) {} @PostLoad void onPostLoad(Object o) {} @PreUpdate void onPreUpdate(Object o) {} @PostUpdate void onPostUpdate(Object o) {} @PreRemove void onPreRemove(Object o) {} @PostRemove void onPostRemove(Object o) {} }

    【讨论】:

    • 如果我这样做,我必须在我拥有的所有实体上添加@EntityListeners..这不是我想要做的..感谢您的回答
    • @AmanTuladhar 关于第一个解决方案,您不必添加 @EntityListener
    • @AmanTuladhar 你可以直接在实体类上添加监听器
    • 同样的问题适用于我需要将侦听器添加到我拥有的所有实体中......不仅仅是一个
    • @AmanTuladhar 您的问题不清楚,例如,如果您想要一个通用侦听器,您可以配置一个类并将其扩展至您的所有实体
    猜你喜欢
    • 2014-11-18
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2021-07-19
    • 2014-01-20
    相关资源
    最近更新 更多