我正在尝试模仿针对特定情况的急切获取。我使用spring-data-jpa
和hibernate 4.1
作为实现。我有User
,Role
和Right
。 Role
和User
具有多对多字段,因此会将其映射为实体RoleUser
。 Role
和Right
也在many-to-many
映射为实体RoleRight
。
我想在需要时将用户的所有权利和角色加载到应用程序的Authorization
机制中。以下查询提供了illegal attempt to dereference collection
List<Role> roles = (List<Role>)em.createQuery("select r from RoleImpl r JOIN FETCH r.roleRightMap rrm JOIN FETCH rrm.right ur WHERE r.userRoleMap.user.ID=:id ")
.setParameter("id", ID).getResultList();
如何重写加载角色及其映射感谢。
答案 0 :(得分:0)
查询应该是这样的:
select r from RoleImpl r LEFT JOIN FETCH r.roleRightMap rrm LEFT JOIN FETCH r.userRoleMap urm WHERE urm.user.ID=:id