繁体   English   中英

r2dbc ReactiveCrudRepository 如何编写 JPQL/HQL

[英]r2dbc ReactiveCrudRepository how to write JPQL/HQL

我是 Spring WebFlux 反应式的新手。 我使用 R2DBC postgresql。 我有一个这样的存储库:

public interface BookRepository extends ReactiveCrudRepository<Book, Long> {
}

现在我想添加自定义方法来查询许多复杂的条件:

public interface CustomBookRepository extends BookRepository {
    Flux<Book> findByVeryComplicatedCondition(MyCriteriaDto criteria);
}

我的实现:

public class CustomBookRepositoryImpl extends CustomBookRepository {

    //How to get it?
    EntityManager em;

    @Override
    public Flux<Book> findByVeryComplicatedCondition(MyCriteriaDto criteria) {
        Query query = em.createQuery("SELECT b from Book b WHERE (VERY COMPLICATED CONDITIONS)");
        //What next?
    }
}

我的问题在上面的代码中:

  1. 如何获取EntityManager?
  2. 如何从我构建的 HQL 查询中获取 Flux?

当我问这些问题时,我的意思是“如何使用 Spring 反应/r2dbc 方式做到这一点”,而不是“如何使用 JDBC 做到这一点”

Spring 数据 R2DBC 没有成熟的 ORM 框架(如 Hibernate)支持。 因此不存在 EntityManager 之类的东西,也不可能编写 JQL/HQL 查询。

但是,仍然可以使用本机查询来定义更复杂的方法,例如

interface MyRepository extends ReactiveCrudRepository<...> {

    @Query("SELECT b from Book b WHERE (VERY COMPLICATED CONDITIONS)")
    Flux<...> find(...);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM