一尘不染

Hibernate:具有多对多联接表的条件?

hibernate

考虑以下两个关系:

@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没有相应的实体类。现在,我想获取所有名为Tag1的Tag的Foo实例,是否可以仅使用Criteria?

子查询可能会有所帮助,但是,我无法为不存在的类ATag.class创建DetachedCriteria。


阅读 197

收藏
2020-06-20

共1个答案

一尘不染

只是处理这个确切的问题。您在表中而不是对象中思考。只是参考tags.name,让Hibernate负责其余的工作:

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

如果您看到SQL Hibernate吐出,您会看到它使用了连接表。

2020-06-20