Как написать и / или оператор в Hibernate? - PullRequest
0 голосов
/ 24 марта 2011

Я должен использовать операторы И / ИЛИ, чтобы переходить в спящий режим по запросу.

SQL-запрос:

select *from tableName where col1='value1' and col2='value2' and (col3='value3' or col4='value3');

Я думаю, что это так:

DetachedCriteria criteria = DetachedCriteria.forClass(tableName.class)
                            .add(Property.forName("col1").eq(value1))
                            .add(Property.forName("col2").eq(value2))
                            ....????????);

Как правильно это сделать?

1 Ответ

2 голосов
/ 24 марта 2011
criteria.add(Restrictions.or(Property.forName("col3").eq("value3"),
                             Property.forName("col4").eq("value3")));

полезно, когда у вас есть только два выражения, связанных or (или and, с Restrictions.and).

Если у вас более двух выражений, используйте дизъюнкцию или конъюнкцию:

Disjunction orExpression = Restrictions.disjunction();
orExpression.add(Property.forName("col3").eq("value3"))
            .add(Property.forName("col4").eq("value3"))
            .add(Property.forName("col5").eq("value3"));
criteria.add(orExpression);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...