Hibernate: Criteria with many

Consider following two relations:

@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;
}

There is no corresponding entity class for the join table ATag. Now, I want to get all Foo instances with Tag named 'tag1', is it possible using only Criteria?

A sub-query maybe helpful, however, I can't create DetachedCriteria for class ATag.class which isn't existed.


Just dealt with this exact issue. You're thinking in tables, not objects. Just reference tags.name and let Hibernate take care of the rest:

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

If you watch the SQL Hibernate spits out, you'll see it uses the join table.

链接地址: http://www.djcxy.com/p/37050.html

上一篇: 组合PK字段的分离标准?

下一篇: 休眠:与许多标准