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

Spring数据规范内部连接子查询

锺高翰
2023-03-14

我有一个用spring boot Version1.5.x编写的项目,它连接到一个MariaDB数据库和几个表,它们之间有大量的关系。为了查询数据库,我使用org.springframework.data.jpa.repository中提供的JpaSpecificationExecutor接口。我们使用规范的原因是为了构建动态查询,而不必为存储库本身中的每个筛选可能性编写新的查询。在实体本身中,每个关系都有懒惰的FetchType。此外,关系的获取是动态的,并不是每次都一样,我还在规范中定义了必须获取的内容。

SELECT 
    *
FROM
    Person p
        JOIN
    Role r on r.f_person = p.id
        JOIN
    Title t on t.f_person = p.id
        JOIN
    (SELECT 
        p2.id
    FROM
        Person p2
    WHERE
        p2.name LIKE '%John%'
    ORDER BY p2.name DESC
    LIMIT 100 OFFSET 100) AS p2 ON p2.id = p.id

是否有任何方法可以在规范中或通过使用entitymanger来构建这个查询,以便我们可以保持查询的动态性质。

共有1个答案

蒋栋
2023-03-14

我找到了这张关于Hibernate的票:https://hibernate.atlassian.net/browse/hhh-3356

这告诉我,我正在寻找的功能,暂时不能与Hibernate一起工作。我将查询分成两部分,一部分获取所有被分页和排序的实体的ID,然后根据这些ID获取所有实体。可能不是性能最好的解决方案,但它很有效,而且比根本没有分页要快得多。

 类似资料:
  • 我正在尝试开发一个具有规范和RSQL的搜索API。遵循本教程-https://www.baeldung.com/rest-api-search-language-rsql-fiql

  • 组: 用户: 存储库类:

  • 我正在尝试获取员工的详细信息,其雇员类型是职员,其加入日期是最近的一个。 SQL Server 2008中的查询如下所示: 提前致谢

  • 我想使用Spring JPA规范连接函数 这是我的表格代码: > } 我如何在规范中加入表中的学生和家长?

  • 我按照本教程获得了Spring Data JPA规范:https://dzone.com/articles/using-spring-data-jpa-specification 它为我实现了这一点,但我不能调用规范方法来搜索它们。我想把它们放在我的SearchController中: 现在我想在我的SearchController(比如Controller)中调用这个方法,但我不知道如何调用。目

  • 有一个使用属性表达式的查询:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-方法。查询属性表达式: 试图通过规范执行查询: 我得到了一个错误: 我做错了什么或忘记添加了什么? 查询:按教师姓名显示所有学生 基地实体: 实体教师: 实体学生: 实体教室: 实体教室: