HQL错误:加入的预期路径

时间:2012-05-04 12:37:09

标签: java spring-mvc

我一直在尝试此查询的变体,似乎无法实现这一点。我也引用了这篇文章:Path Expected for Join! Nhibernate Error并且似​​乎无法将相同的逻辑应用于我的查询。我的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"
)

2 个答案:

答案 0 :(得分:119)

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语句中使用路径,从一个实体到另一个实体。有关详细信息,请参阅Hibernate documentation on HQL and joins

答案 1 :(得分:55)

您需要将保存关联的实体命名为User。例如,

... INNER JOIN ug.user u ...

这是错误消息抱怨的“路径” - 从UserGroup到User实体的路径。

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