Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring数据@Query与连接_Spring_Join_Spring Data_Spring Data Jpa - Fatal编程技术网

Spring数据@Query与连接

Spring数据@Query与连接,spring,join,spring-data,spring-data-jpa,Spring,Join,Spring Data,Spring Data Jpa,我对Spring数据相当陌生,我想创建一个查询,允许我在两个实体之间进行内部连接 我一直在使用此堆栈溢出来尝试澄清某些方面: 它给出了查询结构如下的答案: @Query("select u.userName from User u inner join u.area ar where ar.idArea = :idArea") 但是在这个查询中,我看不出它在哪里定义了“ar”,因为两个实体类都没有在它们自己内部定义“ar”?对此的任何澄清都将不胜感激 考虑这个例子 SELECT c FROM

我对Spring数据相当陌生,我想创建一个查询,允许我在两个实体之间进行内部连接

我一直在使用此堆栈溢出来尝试澄清某些方面:

它给出了查询结构如下的答案:

@Query("select u.userName from User u inner join u.area ar where ar.idArea = :idArea")
但是在这个查询中,我看不出它在哪里定义了“ar”,因为两个实体类都没有在它们自己内部定义“ar”?对此的任何澄清都将不胜感激

考虑这个例子

SELECT c FROM Country c
这里,c称为范围变量

范围变量是遍历的查询标识变量 特定实体类层次结构(即 实体类及其所有子实体类)

您可以阅读有关范围变量的更多信息

根据您的查询,不存在“区域ar”,您需要了解此查询是基于JPQL(而不是SQL)的。考虑下面的查询:

SELECT c1, c2 FROM Country c1 INNER JOIN c1.neighbors c2
JPQL提供了一种称为连接变量的东西,它表示对指定对象集合的更有限的迭代。在上面的查询中,c1是一个范围变量,而c2是一个绑定到路径c1的连接变量。它与该集合中的对象相邻并仅在该集合中的对象上迭代


您可以在

中更详细地了解它,该区域实际上是在用户实体类中定义的,并且在您的查询区域中使用“ar”作为别名,并用作联接的第二个实体

@Query("select u.userName from User u inner join **u.area** ar
        where ar.idArea = :idArea") 

提示:User后面的
u
代表什么?用户是的,但我的印象是u是由“User u”定义的。在该查询中,没有“区域ar”?可能重复的