gpt4 book ai didi

Hibernate Criteria join 查询一对多

转载 作者:行者123 更新时间:2023-12-03 10:22:50 24 4
gpt4 key购买 nike

我有一个 Cat 类和一个 Owner 类。一只猫有一个主人,但一个主人可以养多只猫。我要查询的是获取所有拥有蓝眼睛猫的主人 .

class Cat {
Owner owner; //referenced from Owner.id
String eyeColor;
}

class Owner {
List<Cat> catList;
}

我尝试了一些代码,但我真的不知道该怎么做。
Criteria criteria = getCurrentSession().createCriteria(cat.getClass(), "cat");
criteria.createAlias("cat.owner", "owner");
criteria.add(Restrictions.eq("cat.eyeColor", "blue");

最佳答案

Criteria 只能选择投影或根实体。不是一些加入的实体。因此,某些查询无法用 Criteria 表达(除了更好的可读性和简洁性之外,这是使用 HQL 的另一个很好的理由)。

但是,这里并没有丢失所有内容,因为您的关联是双向的。所以你只需要相当于 HQL 查询

select distinct owner from Owner owner 
join owner.cats cat
where cat.eyeColor = 'blue'

这是
Criteria c = session.createCriteria(Owner.class, "owner");
c.createAlias("owner.cats", "cat");
c.add(Restrictions.eq("cat.eyeColor", "blue");
c.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

关于Hibernate Criteria join 查询一对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17701147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com