使用Hibernate标准匹配列表中的* ALL *项

所以我有一个Hibernate实体(让我们称之为动物园),并设置了如下的多对多关系:

@ManyToMany(cascade = {})
@JoinTable(name = "animal",
    joinColumns = @JoinColumn(name = "zoo_id"),
    inverseJoinColumns = @JoinColumn(name = "animal_id"))
@LazyCollection(LazyCollectionOption.FALSE)
public List<Animal> getAnimal() {
    return animals;
}

所以现在我想找到动物“狮子”,“老虎”和“熊”的所有动物园。 现在我不在乎他们是否有其他动物,但我不想只有老虎和mar猴的动物园。 我应该使用什么样的标准给出动物名称列表以匹配列表中的所有元素? 如果我使用Restricions.in,我将获得至少有一个动物园,但不一定是所有动物的要求。

谢谢


你可以使用下面的查询,我会让你翻译成Criteria:

select zoo from Zoo zoo
where 3 = (select count(distinct animal.name) from Zoo zoo2 
           join zoo2.animals animal
           where zoo2.id = zoo.id
           and animal.name in ('lion', 'tiger', 'bear'))
链接地址: http://www.djcxy.com/p/36985.html

上一篇: Matching *ALL* items in a list with Hibernate criteria

下一篇: Restriction including a Sub