gpt4 book ai didi

java - 如何确定两个列表是否与 Hibernate 共享任何对象

转载 作者:太空宇宙 更新时间:2023-11-04 11:21:29 25 4
gpt4 key购买 nike

我创建了这个示例 SQL 查询,它尝试查找所有具有关联的 REPORT_PERMISSION 对象以及当前用户也具有的 USER_GROUP 对象之一的 REPORT。因此,有许多 REPORT_PERMISSION 对象将报表绑定(bind)到一个组,并且用户可以拥有多个组,只需其中一个组匹配即可允许用户查看报表。我只是不知道如何在 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';

最佳答案

应该是这样的:

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 中使用的名称和映射中的字段名称):

rep.reportPermissions -- 报表中集合 reportPermissions;

per.userGroups -- ReportPermission中集合 用户组;

gr.users -- 集合UserGroup中的 用户;

u.id -- @Id 长 id;在用户类中

关于java - 如何确定两个列表是否与 Hibernate 共享任何对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44856041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com