【问题标题】:Matching *ALL* items in a list with Hibernate criteria将列表中的 *ALL* 项与 Hibernate 条件匹配
【发布时间】:2013-08-25 05:38:09
【问题描述】:

所以我有一个 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,我会得到至少有一个但不一定是所有请求的动物的动物园。

谢谢

【问题讨论】:

    标签: java hibernate criteria


    【解决方案1】:

    您可以使用以下查询,我会让您翻译成 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'))
    

    【讨论】:

    • 如果有现成的标准翻译,我也想要,提前致谢。
    猜你喜欢
    • 2019-11-14
    • 2017-01-27
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 2012-02-01
    • 2012-07-09
    • 2021-12-11
    • 2014-09-28
    相关资源
    最近更新 更多