我有一个用户表,其中包含所有用户。 Rolemember表具有用户的角色,但并非所有用户都有角色。 ActivityMember是一个小组的成员。
表中的ActivityMember有3个成员/用户。只有该Activitymer的一个用户被指定为RoleMember。
public class RoleMember {
private Long id;
private Long activityId;
private String role;
private User user;
}
public class ActivityMember{
private User user;
private Activity activity;
private int status;
}
现在我想获取ActivityMember组的所有用户,无论是否有他们的角色
e.g。 ActivityMember表
activity_id ----- user_id
78 --------------- 7
78 --------------- 31
78 --------------- 17
e.g。 RoleMember表
user_id --- activity_id ---角色
7 ------- 78 ----------程序员
输出我得到了
user_id ----角色
7 ----------程序员
31 ----------程序员
17 ----------程序员
我希望输出
user_id ----角色
7 ----------程序员
31 ----------
17 ----------
SQL:
select users.firstName, roleM.role from activity_member activityM
left join users users on activityM.user_Id = users.id
left join rolemember roleM on (roleM.assigned_to_user=activityM.user_Id and roleM.activityId=activityM.activity_id)
where activityM.activity_id=78
我尝试过的HQL不起作用:
from ActivityMember activityM
right join activityM.user user
left join RoleMember roleM with (roleM.assignedToUser.id= activityM.user.Id and roleM.activityId=activityM.activityId)
where
activityM.activity.id=?
使用HQL我得到了这个例外
Caused by: org.hibernate.hql.ast.QuerySyntaxException: Path expected for join!