1

所以我有一个 Hibernate 实体(我们称之为 Zoos),它的多对多关系设置如下:

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

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

谢谢

4

1 回答 1

0

您可以使用以下查询,我会让您翻译成标准:

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'))
于 2013-08-25T08:27:11.657 回答