如果要创建包含许多对象的 OR
表达式
Criterion,可以使用的实例
org.hibernate.criterion.Disjunction。使用此对象等效于但比使用多个OR限制更方便。要获取
Disjunction对象,请致电
Restrictions.disjunction()。
如果您需要使用多个对象创建 AND
表达式
Criterion,则可以使用的对象
org.hibernate.criterion.Conjunction。该
Restrictions.conjunction()方法返回一个
Conjunction。
的
Disjunction和
Conjunction类提供
add()分别的方法来施加OR或AND,标准之间。
您的情况:
在您的特定情况下,您可以创建
Disjunction具有两个的外部对象
Criterion:
Student
不上课的人;- 一个
Conjunction
有两个Criterion
:Student
分配给的classe
所有物schoolYear
"1"
;Student
那些小号pass
设置true
。
样例代码:
以下代码同时使用
Disjunction和
Conjunction对象来构造必要的条件。
Criteria c = session.createCriteria(Student.class) .createAlias("assignements", "a") .createAlias("a.classe","c");Disjunction or = Restrictions.disjunction();or.add(Restrictions.isNull("classeActuelle"));Conjunction and = Restrictions.conjunction();and.add(Restrictions.eq("a.pass", Boolean.TRUE)and.add(Restrictions.eq("c.schoolYear", "1"))or.add(and);c.add(or);// you can use your criteria c now


