一尘不染

Hibernate API中的ElementCollection createAlias

hibernate

有谁知道是否以及如何使用hibernate条件API编写以下问题的解决方案(由JPAAPI编写)?

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

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

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

如果我要为参与者创建一个实体,这将很简单:

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

但是我无法使用非实体创建别名…


阅读 205

收藏
2020-06-20

共1个答案

一尘不染

正如解释在这里我想要的东西是不可能的:

使用ElementCollection而不是OneToMany的局限性在于,无法独立于其父对象来查询,持久化和合并目标对象。它们是严格私有的(从属)对象,与嵌入式映射相同。ElementCollection上没有层叠选项,目标对象始终与其父对象保持,合并或删除。

因此,我改为使用OneToMany。

2020-06-20