hibernate - 如何在hibernate中查询@MapKeyJoinColumn

标签 hibernate dictionary 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)
@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+ 中修复:

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

关于hibernate - 如何在hibernate中查询@MapKeyJoinColumn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19925989/

相关文章:

java - JPA:关系的目标有可能是非实体吗?

java - 间接 Hibernate/JPA 方法调用丢失事务

java - 如何使用 Hibernate 保存 Class 类型的属性?

python - 获取字典值作为列表

jpa - 通过三重联接表在每个 AddressType 的 Person 中定义多个 Address 属性

java - JPA 2 - 如何使用 Spring Data JPA 构建具有主键也是外键的实体?

hibernate ,更改标识符/主键

c# - 如何将 SQL 的 'translate' 除了 (N)Hibernate (Criteria API)?

java - Hibernate 3 OneToOne 与 PostgreSQL 配合使用

python - 在 python 中存储字典和 json 文件类型的推荐方法是什么