【发布时间】:2013-07-16 02:04:18
【问题描述】:
我有一个 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");
【问题讨论】:
-
关联是双向的吗?为什么不对这样的静态查询使用 HQL?
-
@JBNizet 抱歉,但我别无选择,比如使用 HQL。
-
关联是双向的吗?为什么你没有选择?这就像木匠不允许使用锤子一样!
-
@JBNizet 我编辑了。抱歉,这不是我的决定。
-
不能使用HQL,以防查询太复杂,最好写条件查询,还可以处理所有类型转换,比如将localDate类型转换为时区格式等。写HQL是一件痛苦的事尤其是当你在 where 子句的查询中有 100 个过滤器时,代码是一种编写长查询的托管方式,并且从长远来看易于维护。
标签: hibernate hibernate-criteria