2

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

@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>();

现在我想按用户获取资源,我该怎么做?有什么建议吗?感谢先进。

4

1 回答 1

3

JPQL 具有用于处理地图的 key()、entry() 和 value() 运算符。毫无疑问,如果您使用 Criteria API,它也有类似的东西。

查看文档的第 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 问题:

https://hibernate.atlassian.net/browse/HHH-5396

于 2013-11-12T10:17:20.227 回答