我的Resources实体有一个属性:
@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>();
现在我想获得用户资源,我该怎么做?有什么建议吗? 谢谢高级。
答案 0 :(得分:1)
JPQL具有用于处理Maps的key(),entry()和value()运算符。毫无疑问,如果你使用的话,Criteria API会有类似的东西。
查看documnetation的第11.3.5.1节:
http://docs.jboss.org/hibernate/core/4.1/devguide/en-US/html/ch11.html
似乎你想要之类的东西(我还没试过):
"from resources r join r.userPermissions p where key(p) = ?1";
虽然看到以下在4.1.4 +中修复报告的Hibernate问题: