如何使用休眠创建包含多个条件的 OR 块



我有多个由标准构建的标准,我想在它们之间创建一个分离。

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 条件。将它们作为 OR 添加到条件中。

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));

最新更新