当前位置: 首页 > 知识库问答 >
问题:

r2dbc ReactiveCrudepository如何编写JPQL/HQL

朱啸
2023-03-14

我是SpringWebFlux反应型新手。我使用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实现这种常规方式”

共有1个答案

严承允
2023-03-14

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

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

interface MyRepository extends ReactiveCrudRepository<...> {

    @Query("SELECT b from Book b WHERE (VERY COMPLICATED CONDITIONS)")
    Flux<...> find(...);
}
 类似资料:
  • 问题内容: 我正在使用Toplink Essentials(JPA)+ GlassFish v3 + NetBean 6.9 我有一个带有复合主键的表: 我创建了2个实体类,一个是实体本身,第二个是PK类。 现在.. 我该如何在WHERE中用JPQL编写SELECT子句? 这失败了。 http://www.mail- archive.com/users@openjpa.apache.org/msg

  • 问题内容: 类似于,是否有写方法? 我正在通过重写一些旧代码来练习Java 8。而且,我想知道如何使用Stream API编写以下函数。 我希望它将转化为以下内容: 问题答案:

  • 如果你写了一个很棒的starter,恳请告知我们,报个issue即可,码云或者github均可 https://gitee.com/nutz/nutzboot https://github.com/nutzam/nutzboot 基本结构 与NB项目一样, starter也是maven项目 - src - main - java - net

  • 我正在为授权服务器开发一个管理用户界面。其中一个功能是显示登录用户的列表,我们通过查询存储当前发布的刷新令牌的数据库表来实现这一点。用户可以从多个设备登录到同一个应用程序,生成多个令牌。目前的要求不是按设备细分此视图,而是如果用户已登录,则它们将显示在列表中。如果我们撤销访问权(此UI的其他要求之一),那么所有设备的刷新令牌都将被撤销。 不管怎样,最让我困惑的是这个问题。我编写这个查询是为了收回指

  • 我想知道JPQL是否可以嵌套查询。我正在学习Spring Data JPA,我也上传了几个相关的问题。 如果MySQL中有以下sql,我如何生成JPQL: 我有两个实体。 上面的实体有一个@OneTo多集合,集合实体在下面。 我想得到不到10个孩子的作弊实体。

  • 问题内容: 我正在将iPhone应用程序作为一个业余项目编写,它将需要一个Web服务来为其提供数据。它与我在工作中没有太大区别,但在工作中我只编写视图和控制器。其他人负责编写模型,通常由客户端提供Web服务。 以前,当每个人都使用MySQL和PHP时,我已经做过一些Web编程,所以我的技能有些过时了,但是我有信心,我可以使用我已经知道的技术来完成它。但是,我不想浪费时间使用过时的工具。我发现最先进