使用jpa存储库查询多个表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用jpa存储库查询多个表相关的知识,希望对你有一定的参考价值。

假设我有3个实体 - UserSkillsDepartment和我有相应的所有存储库 - UserRepositorySkillRepositoryDepartmentRepository

我知道应该在相应的实体类中指定实体之间的关系映射,即一对多。问题是我想在查询中使用所有3个实体。我该怎么办?单个存储库只与一个实体相关联吗?那么,我将如何/在哪里写它?

答案

由于有许多不同的方法可以使用Spring Data JPA指定查询,因此可以有各种答案。

  1. 也许你不必。如果实体A引用B,你只想用你的B得到As,你只需使用你的ARepository加载As并使用对象导航来获取你的Bs。您可以阅读有关如何控制此操作的更多信息。
  2. 如果要在where条件中引用实体,可以在查询方法名称中使用属性路径:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-property-expressions
  3. 如果您正在使用@Query注释,您可以(几乎)使用JPQL执行任何操作。除此之外,您还可以导航属性以在where子句中使用它们。

通常,您将根据返回的主实体将该查询放在匹配的存储库中。

以上是关于使用jpa存储库查询多个表的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring JPA 调用存储过程

在 JPA 存储库(Spring Data Jpa)中执行自定义查询

使用 Spring Jpa 从两个或多个表中获取选定的列

如何使用连接定义 JPA 存储库查询

继承所有存储库方法的 Spring Data JPA 全局过滤器子句

使用 QueryDSL 和 Spring 的存储库编写跨表查询