Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
Java HQL错误:应为联接指定路径_Java_Spring Mvc - Fatal编程技术网

Java HQL错误:应为联接指定路径

Java HQL错误:应为联接指定路径,java,spring-mvc,Java,Spring Mvc,我一直在尝试这个查询的变体,但似乎无法实现这一点。我也引用了这篇文章:似乎无法将相同的逻辑应用于我的查询。我的User对象有一个UserGroup集合 我知道查询需要引用对象中的实体,但从我看到的情况来看,我 @NamedQuery( name = "User.findByGroupId", query = "SELECT u FROM UserGroup ug " + "INNER JOIN User u WHERE ug.group_id = :groupId ORD

我一直在尝试这个查询的变体,但似乎无法实现这一点。我也引用了这篇文章:似乎无法将相同的逻辑应用于我的查询。我的
User
对象有一个
UserGroup
集合

我知道查询需要引用对象中的实体,但从我看到的情况来看,我

@NamedQuery(
  name = "User.findByGroupId",
  query =
    "SELECT u FROM UserGroup ug " +
    "INNER JOIN User u WHERE ug.group_id = :groupId ORDER BY u.lastname"
)

您需要命名与用户关联的实体。比如说,

... INNER JOIN ug.user u ...
这就是错误消息所抱怨的“路径”——从用户组到用户实体的路径

Hibernate依赖于声明性联接,其联接条件在映射元数据中声明。这就是为什么在没有路径的情况下不可能构造本机SQL查询的原因

select u from UserGroup ug inner join ug.user u 
where ug.group_id = :groupId 
order by u.lastname
作为命名查询:

@NamedQuery(
  name = "User.findByGroupId",
  query =
    "SELECT u FROM UserGroup ug " +
    "INNER JOIN ug.user u WHERE ug.group_id = :groupId ORDER BY u.lastname"
)

在HQL语句中使用从一个实体到另一个实体的路径。有关详细信息,请参阅。

什么是“路径”?我搜索了HQL文档,但没有找到定义。这意味着您需要链接实体:在上面的示例中,请注意他是如何放置ug.user u的。如果前面没有ug,则会出现错误。此外,“ug.user u”中的“user”应该是类UserGroup中字段的名称!这种HQL语法很烦人。我找到了很多例子,也找到了你的。然后,如果没有实体声明的显式映射(用于连接的字段),我就不能“手动”连接实体?最后有人回答了问题的根源。。。(需要使用现有别名作为外部表的前缀)解决了我的问题,非常感谢!如果:您没有在实体中建立关联,只是保存了类似“Long userId;”的内容