假设我有这样的类:
class A {
B getB();
C getC();
}
class B {
String getFoo();
}
class C {
int getBar();
}
我想在 A 上过滤条件,两个过滤器在不同的子类属性上,例如:
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));
我想做的是使用“或”子句将 criteriaB 和 criteriaC 结合起来,例如:
//this does not work
criteriaA.add(Restrictions.disjunction().add(criteriaB).add(criteriaC));
我怎样才能做到这一点?我在此处的 API 上遇到了一些问题。
最佳答案
使用aliases而不是嵌套标准:
Criteria criteria = session.createCriteria(A.class)
.createAlias("b", "b_alias")
.createAlias("c", "c_alias")
.add(Restrictions.disjunction()
.add(Restrictions.eq("b_alias.foo", "Something"))
.add(Restrictions.eq("c_alias.bar", "0"))
);
关于java - Hibernate criteria 查询不同对象的不同属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1528352/