hel*_*one 25 hibernate hibernate-criteria
我有一个Cat类和一个Owner类.一只猫有一个主人,但主人可以有很多猫.我想要查询的是让所有拥有蓝眼睛的猫的主人.
class Cat {
Owner owner; //referenced from Owner.id
String eyeColor;
}
class Owner {
List<Cat> catList;
}
Run Code Online (Sandbox Code Playgroud)
我尝试了一些代码,但我真的不知道该怎么做.
Criteria criteria = getCurrentSession().createCriteria(cat.getClass(), "cat");
criteria.createAlias("cat.owner", "owner");
criteria.add(Restrictions.eq("cat.eyeColor", "blue");
Run Code Online (Sandbox Code Playgroud)
JB *_*zet 44
条件只能选择投影或根实体.不是一些加入的实体.因此,一些查询无法用Criteria表达(这是使用HQL的一个更好的理由,此外还有更好的可读性和简洁性).
但是,所有这些都不会丢失,因为您的关联是双向的.所以你只需要等效的HQL查询
select distinct owner from Owner owner
join owner.cats cat
where cat.eyeColor = 'blue'
Run Code Online (Sandbox Code Playgroud)
这是
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42355 次 |
| 最近记录: |