java Hibernate条件查询不同对象的不同属性
假设我有这样的课程:
class A {
B getB();
C getC();
}
class B {
String getFoo();
}
class C {
int getBar();
}
我想在一个,两个不同子类属性的过滤器上筛选条件,比如:
Criteria criteriaA = session.createCriteria(A.class);
Criteria criteriaB = criteriaA.createCriteria("b").add(Restrictions.eq("foo", "Something"));
Criteria criteriaC = criteriaA.createCriteria("c").add(Restrictions.eq("bar", 0));
我要做的是使用“or”子句将criteriaB和criteriaC组合起来,类似于:
//this does not work
criteriaA.add(Restrictions.disjunction().add(criteriaB).add(criteriaC));
我怎样才能做到这一点?我在这里对API有点结巴
# 1 楼答案
如果其他人认为它有用,我找到了一个更复杂的问题答案,这似乎是API允许的,尽管在ChssPly发布他的(更简单的)解决方案之前,我没有测试它:
# 2 楼答案
您只需要像这样创建一个criteria对象
# 3 楼答案
使用aliases代替嵌套条件: