【问题标题】:Complex Spring Boot Queries复杂的 Spring Boot 查询
【发布时间】:2020-09-22 21:22:50
【问题描述】:

我有多个实体,它们通过复杂的多对多、单对多和多对一关系相互关联。例如,考虑下面的实体关系

考虑到上面的 ERD,我想检索属于特定解决方案名称的所有帐户。有什么办法可以在 Spring Boot 中执行如此复杂的查询。

我知道规范可用于在 Spring Boot 应用程序中执行过滤器操作,但我不知道如何根据属于其孩子的孩子的属性提取帐户:D

【问题讨论】:

  • 我注意到标签中有elasticsearch。我猜您也将其视为选项。但是,正如您已经提到的,如何编写自定义 SQL 查询来执行 JOIN/filter/group by 等? Spring-Data-Jpa 也支持它:docs.spring.io/spring-data/jpa/docs/current/reference/html/…。或者干脆注入 JdbcTemplate 并编写查询并执行。人们用几个表编写 SQL JOIN 并且工作正常。

标签: spring spring-boot spring-mvc spring-data-jpa


【解决方案1】:

我能够弄清楚。我只需要加入实体并相应地使用谓词。

Join<Account, ProgramType> types = root.join("programType");
Join<ProgramType, Specialization> special = types.join("specializations");
Join<Specialization, Solution> solution = special.join("solutions");

return cb.equal(solution.get("name"), value);

【讨论】:

    猜你喜欢
    • 2022-10-14
    • 2019-10-05
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    相关资源
    最近更新 更多