小编Prz*_*awP的帖子

如何将 spring bean 注入到 hibernate envers RevisionListener 中

我正在使用 Spring 5.1 和 Hibernate 5.3.9,包括 hibernate-envers。我不知道如何将 spring bean 注入到 hibernate envers 自定义 RevisionListener 中。

我努力了

  (@Service or @Component)
  public class ExtendedRevisionListener implements RevisionListener {

  @Autowired
  private MyService myService;

  void newRevision(Object revisionEntity){
    myService.doSomething(...)
  }
}
Run Code Online (Sandbox Code Playgroud)

当然,该类包含在 @ComponentScan 包解析中。问题是 myService 没有注入到侦听器中。

在 hibernate-envers 文档中:

https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#envers-basics

从 Hibernate Envers 5.3 开始,RevisionListener 现在支持依赖注入。此功能取决于各种依赖框架(例如 CDI 和 Spring),以在 Hibernate ORM 引导期间提供必要的实现以支持注入。如果未提供合格的实现,则将在不注入的情况下构造 RevisionListener。

不幸的是我还没有找到任何有效的例子。

@Naros我在我的Spring持久性JPA配置中设置了EntityMaganerFactoryBean - >entityManager = new org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean()

10:49| DEBUG | SessionFactoryImpl.java 252 | Session factory constructed with filter configurations : {}
10:49| DEBUG …
Run Code Online (Sandbox Code Playgroud)

java hibernate hibernate-envers spring-data-jpa

4
推荐指数
1
解决办法
5585
查看次数

有没有更简单的方法使用BETWEEN进行JPQL查询以在属性中包含NULL值

我有一个JPQL查询

    @Query("SELECT e FROM Entry e WHERE :chosenDate BETWEEN e.periodFrom AND e.periodTo")
    List<Entry> findByChosenDate(LocalDate chosenDate);
Run Code Online (Sandbox Code Playgroud)

有一个问题,当未设置属性“ periodFrom”或“ periodTo”之一时,将不会选择该条目。我希望查询还包括带有一个或两个NULL值的整数。

我希望查询在其他三种情况下选择条目:

  1. 当“ periodFrom”为空而“ periodTo”为空时,应找到该条目。

  2. 当“ periodFrom”为空并且“ periodTo”> =:chosenDate时,应找到该条目。

  3. 当“ periodFrom” <=:chosenDate和“ periodTo”为空时,应找到该条目。

有没有比这样的查询更简单的方法:

    @Query("SELECT e FROM Entry e WHERE (:chosenDate BETWEEN e.periodFrom AND e.periodTo) 
        OR (e.periodFrom IS NULL AND e.periodTo IS NULL )
        OR ( e.periodFrom <= :chosenDate AND e.periodTo IS NULL)
        OR (e.periodFrom IS NULL AND e.periodTo >= :chosenDate)") 
    List<Entry> findByChosenDate(LocalDate chosenDate);
Run Code Online (Sandbox Code Playgroud)

java jpa jpql

1
推荐指数
1
解决办法
119
查看次数

标签 统计

java ×2

hibernate ×1

hibernate-envers ×1

jpa ×1

jpql ×1

spring-data-jpa ×1