如何在hibernate中查询@MapKeyJoinColumn

如何在hibernate中查询@MapKeyJoinColumn,hibernate,map,jpa-2.0,hql,Hibernate,Map,Jpa 2.0,Hql,“我的资源”实体具有如下属性: @ElementCollection(fetch = FetchType.LAZY) @CollectionTable(name = "CMS_RESOURCE_USER_PERMISSION", joinColumns = @JoinColumn(name = "RESOURCE_ID", referencedColumnName = "ID")) @MapKeyJoinColumn(name = "USER_ID", nullable = false) @En

“我的资源”实体具有如下属性:

@ElementCollection(fetch = FetchType.LAZY)
@CollectionTable(name = "CMS_RESOURCE_USER_PERMISSION", joinColumns = @JoinColumn(name = "RESOURCE_ID", referencedColumnName = "ID"))
@MapKeyJoinColumn(name = "USER_ID", nullable = false)
@Enumerated(EnumType.STRING)
@Column(name = "PERMISSION", length = 50, nullable = false)
protected Map<User, ResourcePermission> userPermissions = new HashMap<User, ResourcePermission>();
@ElementCollection(fetch=FetchType.LAZY)
@CollectionTable(name=“CMS\u RESOURCE\u USER\u PERMISSION”,joinColumns=@JoinColumn(name=“RESOURCE\u ID”,referencedColumnName=“ID”))
@MapKeyJoinColumn(name=“USER\u ID”,nullable=false)
@枚举(EnumType.STRING)
@列(name=“PERMISSION”,长度=50,可空=false)
受保护的映射userPermissions=new HashMap();
现在我想按用户获取资源,我该怎么做?有什么建议吗? 感谢advanced。

JPQL使用key()、entry()和value()运算符处理贴图。毫无疑问,如果您使用的是CriteriaAPI,它也有类似的功能

查看文件第11.3.5.1节:

看起来你想要的是(我没有试过):

尽管在4.1.4+中报告了以下已修复的Hibernate问题,但请参见:

"from resources r join r.userPermissions p where key(p) = ?1";