Hibernate:具有多对多连接表的标准?

Xiè*_*léi 14 hibernate criteria

考虑以下两种关系:

@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;
}
Run Code Online (Sandbox Code Playgroud)

连接表ATag没有对应的实体类.现在,我想要使用名为'tag1'的Tag获取所有Foo实例,是否可以仅使用Criteria?

子查询可能有用,但是,我不能为不存在的类ATag.class创建DetachedCriteria.

atr*_*ain 30

刚刚处理了这个问题.你在考虑桌子而不是对象.只需参考tags.name并让Hibernate处理剩下的事情:

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

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

  • 为什么需要使用别名?难道你不能简单地使用`tags.name`而不是`tagsAlias.name`? (3认同)