我有多个根据这些条件构建的条件,并且我想在它们之间创建一个析取项。

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的内容。

我的最终目标是在criteria1criteria2之间创建一个析取项,以得到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));

08-28 15:32