所以我有一个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;
}
所以现在我想找到动物“狮子”,“老虎”和“熊”的所有动物园。现在我不在乎他们是否有其他动物,但我不想只有老虎和mar猴的动物园。给定一个动物名称列表以匹配列表中的所有元素,我应该使用什么样的标准?如果我使用Restricions.in我将获得至少有一个但不一定要求所有动物的动物园。
由于
答案 0 :(得分: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'))