HQL错误:join的path

我不断尝试此查询的变体,似乎无法做到这一点。 我也引用了这个post: join的path! Nhibernate错误 ,似乎无法将相同的逻辑应用于我的查询。 我的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") 
 select u from UserGroup ug inner join ug.user u where ug.group_id = :groupId order by u.lastname 

您需要在HQL查询中使用path,从一个实体到另一个实体。 HQL和连接的Hibernate文档提供了更多的信息。

您需要将持有该关联的实体命名为“用户”。 例如,

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

这是错误消息所抱怨的“path” – 从UserGroup到User实体的path。

Hibernate依赖于声明式JOIN,在映射元数据中声明连接条件。 这就是为什么在没有path的情况下构build本地SQL查询是不可能的。