使用左连接从子节点到父节点 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

你会得到每个人的相关角色列表。