Hibernate:多对多连接表的条件?

yc0p9oo0  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(91)

考虑以下两个关系:

@Entity class Foo {
    @Id id;

    @ManyToMany
    @JoinTable(name = "ATag", 
         joinColumns = @JoinColumn(name = "foo_id"),
         inverseJoinColumns = @JoinColumn(name = "tag_id"))
    Set<Tag> tags;
}

@Entity class Tag {
    @Id Long id;
    String name;
}

字符串
连接表ATag没有对应的实体类。现在,我想获取Tag名为'tag1'的所有Foo示例。是否可以只使用标准?
子查询可能会有所帮助。但是,我无法为不存在的ATag.class类创建DetachedCriteria。

9bfwbjaz

9bfwbjaz1#

刚刚解决了这个问题。你在用表格思考,而不是用物体。只需要引用tags.name,让Hibernate来处理剩下的事情:

Criteria crit = session.createCriteria(Foo.class);
crit.createAlias("tags", "tagsAlias");
crit.add(Restrictions.eq("tagsAlias.name", someValue);

字符串
如果你观察一下SQL Hibernate,你会发现它使用了连接表。

相关问题