Hibernate 一对多关系的Join Fetch多次返回同一实体
我有以下映射Hibernate 一对多关系的Join Fetch多次返回同一实体,hibernate,jpa,persistence,hql,jpql,Hibernate,Jpa,Persistence,Hql,Jpql,我有以下映射 1个用户可以有0个或多个角色。 查询 从用户u加入获取u角色 如果User1有两个角色RoleA和RoleB 然后返回User1两次 我所期望的是,User1应该返回一次,其中包含RoleA和RoleB的角色列表 我怎样才能解决这个问题 另外,请解释多对多关系的行为。用户代码如下: criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); 有关更多详细信息,请查看此链接: 参见JPA规范4
1个用户可以有0个或多个角色。
查询
从用户u加入获取u角色 如果User1有两个角色RoleA和RoleB
然后返回User1两次 我所期望的是,User1应该返回一次,其中包含RoleA和RoleB的角色列表
我怎样才能解决这个问题
另外,请解释多对多关系的行为。用户代码如下:
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
有关更多详细信息,请查看此链接:
参见JPA规范4.4.5.3
SELECT d FROM Department d LEFT JOIN FETCH d.employees WHERE d.deptno = 1
获取联接与相应的内部或外部联接具有相同的联接语义
外部联接,但在
查询中不会返回联接操作的右侧
结果或在查询中以其他方式引用。因此,例如,如果
department 1有五名员工,上面的查询返回五名员工
对部门1实体的引用
选择权
SELECT
子句中添加DISTINCT
,以筛选出
重复行李>
EntityGraph
,并向其中添加角色
字段,
它将被提取,这意味着您在查询中省略了“FETCH JOIN”
roles
字段标记为EAGER,但这将应用于该字段的所有获取,因此可能不可取如果我拥有用户->角色->权限所有多对多,会发生什么。Will criteria.setResultTransformer(CriteriaSpecification.DISTINCT\u ROOT\u实体);按预期返回结果?感谢实体图提示。请回答一位同事告诉我,出于性能原因,您可能希望将.setHint(“hibernate.query.passDistinctThrough”,false)添加到带有“DISTINCT”的命名查询中,如下所述()