RMo*_*sey 16 java hibernate criteria
假设我有以下课程:
class A {
B getB();
C getC();
}
class B {
String getFoo();
}
class C {
int getBar();
}
Run Code Online (Sandbox Code Playgroud)
我想在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));
Run Code Online (Sandbox Code Playgroud)
我想要做的是使用"或"子句组合criteriaB和criteriaC,如:
//this does not work
criteriaA.add(Restrictions.disjunction().add(criteriaB).add(criteriaC));
Run Code Online (Sandbox Code Playgroud)
我怎么能做到这一点?我在这里绊倒了一些API.
Chs*_*y76 24
使用别名而不是嵌套条件:
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"))
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19360 次 |
| 最近记录: |