我一直在尝试这个查询的变体,似乎无法实现这一点。我也引用了这篇文章: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"
)
3条答案
按热度按时间ibrsph3r1#
作为命名查询:
在HQL语句中使用路径,从一个实体到另一个实体。有关详细信息,请参阅Hibernate文档中的HQL和joins。
5n0oy7gb2#
您需要将持有关联的实体命名为User。例如,
这就是错误消息所抱怨的“路径”--从UserGroup到User实体的路径。
Hibernate依赖于声明式JOIN,其连接条件在Map元数据中声明。这就是为什么不可能在没有路径的情况下构造原生SQL查询。
hs1rzwqc3#
如果实体之间没有PK/FK关系,那么Hibernate不接受表的内部连接
做
而不是
后者仅在Student的id(s.id)在StudentDetails(sd.student_id))表design / erd上被引用为FK时才有效