Sti*_*ens 14 java hibernate criteria jpa-2.0
有谁知道是否以及如何使用hibernate标准API编写以下问题的解决方案(使用JPA API编写)?
更具体地说,我有一个Discussion实体,其中包含一个参与者列表(这是一个用户名列表):
@ElementCollection
@Column(name = "user_name")
@CollectionTable(name = "DISCUSSION_USER", joinColumns = @JoinColumn(name = "DISCUSSION_ID"))
@OrderColumn(name = "ORDER_INDEX")
private List<String> participants = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
现在我需要检索给定用户名是参与者的所有讨论.
如果我为参与者创建了一个实体,这将是直截了当的:
Criteria crit = getSession().createCriteria(Discussion.class);
crit.createAlias("participants", "p");
crit.add(Restrictions.eq("p.userName", portalUsername));
Run Code Online (Sandbox Code Playgroud)
但是我无法用非实体创建别名......
lsc*_*hin 28
迟到的答案.
集合的正确propertyName(由@ElementCollection注释)是"elements"或者常量CollectionPropertyNames#COLLECTION_ELEMENTS.
尝试以下答案
Criteria crit = getSession().createCriteria(Discussion.class);
crit.createAlias("participants", "p");
crit.add(Restrictions.eq("p.elements", portalUsername));
Run Code Online (Sandbox Code Playgroud)
或者使用常量COLLECTION_ELEMENTS代替
crit.add(Restrictions.eq("p." + CollectionPropertyNames.COLLECTION_ELEMENTS, portalUsername));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6273 次 |
| 最近记录: |