我有多个根据这些条件构建的条件,并且我想在它们之间创建一个析取项。
Criteria criteria1 = hibernateSession.createCriteria(MyClass);
criteria1.add(Restrictions.eq(field1, value1));
criteria1.add(Restrictions.eq(field2, value2));
criteria1.add(Restrictions.ne(field3, value3));
这将创建类似
Where field1 = value1 and field2 = value and field3 != value3
的内容。然后,
Criteria criteria2 = hibernateSession.createCriteria(MyClass);
criteria2.add(Restrictions.eq(field4, value4));
criteria2.add(Restrictions.eq(field5, value5));
这将创建类似
Where field4 = value4 and field5 = value5
的内容。我的最终目标是在
criteria1
和criteria2
之间创建一个析取项,以得到Where (field1 = value1 and field2 = value and field3 != value3) OR (field4 = value4 and field5 = value5)
。我知道休眠中的析取/结合,但是它们仅接受标准(而不接受标准)。
你们有没有取得过类似的成就?
最佳答案
创建两个AND条件。
将它们添加为条件或。
Criteria criteria = hibernateSession.createCriteria(MyClass);
Criterion rest1= Restrictions.and(Restrictions.eq(field1, value1),
Restrictions.eq(field2, value2),
Restrictions.ne(field3, value3));
Criterion rest2= Restrictions.and(Restrictions.eq(field4, value4),
Restrictions.eq(field5, value5));
criteria.add(Restrictions.or(rest1, rest2));