我创建了这个示例SQL查询,它尝试查找具有关联REPORT
对象的所有REPORT_PERMISSION
,其中包含当前用户也拥有的USER_GROUP
之一。因此,有许多REPORT_PERMISSION
个对象将报表绑定到一个组,并且用户可以拥有多个组,其中一个组必须匹配以允许用户查看报表。我只是不确定如何在HQL中写这个
SELECT * FROM REPORT r
JOIN REPORT_PERMISSION rp
on r.id = rp.report_id and rp.user_group_id in
(SELECT l.user_group_id FROM USER_GROUP_LINK l where l.user_id = 2)
where r.type = 'GENERAL';
答案 0 :(得分:0)
应该是这样的:
Query reportQuery = entityManager.createQuery
("select distinct rep from Report rep
join rep.reportPermissions per
join per.userGroups gr
join gr.users u
where u.id = :userId and rep.type = 'GENERAL'");
reportQuery.setParameter("userId" , user.getId());
示例映射(在hql中使用的名称和映射中的fileds名称):
rep.reportPermissions - Collection< ReportPermission> reportPermissions in Report;
per.userGroups - Collection<用户组> ReportPermission中的userGroup;
gr.users - Collection<使用者名称> UserGroup中的用户;
u.id - @Id Long id;在用户类