使用左连接从子节点到父节点 table 的 Hibernate HQL
Hibernate HQL from child to parent table using left join
模型中有两个表:person,role
PersonRole java class 模拟 N:M 关系。它有两个@ManyToOne 属性:
Person person, Role 角色
我有一个 HQL 查询来检索属于某个角色的所有用户:
select role.name, person.name from PersonRole pr join pr.person join pr.role
需要反其道而行之:一个人的所有角色。但是如果一个人没有角色仍然需要检索这个人(左加入)
select person.name, ro.le.name from PersonRole pr join pr.person join pr.role
这不起作用,因为主要实体是 PersonRole,returns 只有具有角色的用户。如果 Person 实体中没有引用角色的属性,不知道如何从 Person 开始连接并转到可选角色。
怎么做最好?
更新的答案
试试这个:
输入你的 Person
class a 属性 如下:
List<Role> lstRole;
在您编写查询时以这种方式:
SELECT P FROM Person P
你会得到每个人的相关角色列表。
模型中有两个表:person,role
PersonRole java class 模拟 N:M 关系。它有两个@ManyToOne 属性:
Person person, Role 角色
我有一个 HQL 查询来检索属于某个角色的所有用户:
select role.name, person.name from PersonRole pr join pr.person join pr.role
需要反其道而行之:一个人的所有角色。但是如果一个人没有角色仍然需要检索这个人(左加入)
select person.name, ro.le.name from PersonRole pr join pr.person join pr.role
这不起作用,因为主要实体是 PersonRole,returns 只有具有角色的用户。如果 Person 实体中没有引用角色的属性,不知道如何从 Person 开始连接并转到可选角色。
怎么做最好?
更新的答案
试试这个:
输入你的 Person
class a 属性 如下:
List<Role> lstRole;
在您编写查询时以这种方式:
SELECT P FROM Person P
你会得到每个人的相关角色列表。