gpt4 book ai didi

java - hibernate API 中的 ElementCollection createAlias

转载 作者:太空狗 更新时间:2023-10-29 23:02:20 24 4
gpt4 key购买 nike

有谁知道 following question 的解决方案是否以及如何解决? (用JPA API写的)可以用hibernate criteria API写吗?

更具体地说,我有一个包含参与者列表(这是用户名列表)的讨论实体:

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

现在我需要检索给定用户名是参与者的所有讨论。

如果我为 Participant 创建一个实体,这将很简单:

    Criteria crit = getSession().createCriteria(Discussion.class);
crit.createAlias("participants", "p");
crit.add(Restrictions.eq("p.userName", portalUsername));

但我不能用非实体创建别名...

最佳答案

迟到的答案。

集合的正确属性名称(由 @ElementCollection 注释)是 "elements" 或常量 CollectionPropertyNames#COLLECTION_ELEMENTS .

尝试以下答案

Criteria crit = getSession().createCriteria(Discussion.class);
crit.createAlias("participants", "p");

crit.add(Restrictions.eq("p.elements", portalUsername));

或者改用常量COLLECTION_ELEMENTS

crit.add(Restrictions.eq("p." + CollectionPropertyNames.COLLECTION_ELEMENTS, portalUsername));

关于java - hibernate API 中的 ElementCollection createAlias,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4873021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com