我是Spring Data的新手,我想创建一个允许我在两个实体之间进行内部连接的查询。
我一直在使用此堆栈溢出来尝试澄清某些方面:
How To Define a JPA Repository Query with a Join
它给出了构造查询的答案:
@Query("select u.userName from User u inner join u.area ar where ar.idArea = :idArea")
然而,在这个查询中,我没有看到它设法定义的位置" ar"因为这两个实体类都没有实际定义" ar"在他们自己?对此有任何澄清将非常感谢!
答案 0 :(得分:4)
考虑这个例子
SELECT c FROM Country c
这里,c被称为范围变量。
范围变量是迭代的查询标识变量 特定实体类层次结构的所有数据库对象(即 实体类及其所有后代实体类)
您可以阅读有关范围变量here
的更多信息根据您的查询没有“Area ar”,您需要了解此查询基于JPQL(而不是SQL)。请考虑以下问题:
SELECT c1, c2 FROM Country c1 INNER JOIN c1.neighbors c2
JPQL提供了一种称为连接变量的东西,它表示对指定对象集合的更有限的迭代。在上面的查询中,c1是一个范围变量,而c2是一个绑定到路径c1.neighbours的连接变量,只对该集合中的对象进行迭代。
您可以在this article
中详细了解相关信息答案 1 :(得分:3)
区域实际上是在用户实体类中定义的,并且在查询区域中使用“ar”别名,并用作连接的第二个实体。
@Query("select u.userName from User u inner join **u.area** ar
where ar.idArea = :idArea")