我的资源实体具有如下属性:
@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>();
现在我想按用户获取资源,我该怎么做?有什么建议吗? 感谢先进。
最佳答案
JPQL 具有用于处理 map 的 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";
尽管看到以下 Hibernate 问题,据报告已在 4.1.4+ 中修复:
关于hibernate - 如何在hibernate中查询@MapKeyJoinColumn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19925989/