将mySQL WHERE语句转换为hibernate限制

时间:2015-07-13 10:04:51

标签: mysql hibernate java-8 where predicate

如何将mySQL WHERE限制转换为hibernate表达式限制或谓词限制? MySQL声明是:

SELECT * 
FROM Zaposleni 
WHERE ime= 'Marko' 
OR adresa= 'Uzice' 
AND brojgodina BETWEEN 25 AND 50 
OR visinadohotka BETWEEN 10 AND 30

1 个答案:

答案 0 :(得分:0)

对OR子句使用Disjunction

Criteria criteria = session.createCriteria(YourEntityClassName.class);

Disjunction disjunction = Restrictions.disjunction();
Criterion ime = Restrictions.eq("ime","Marko");
Criterion adresa = Restrictions.eq("adresa","Uzice");
disjunction.add(ime);
disjunction.add(adresa);

Disjunction disjunctionForBetweenCondition = Restrictions.disjunction();
Criterion brojgodina = Restrictions.between("brojgodina", 25, 50);
Criterion visinadohotka = Restrictions.between("visinadohotka", 10, 30);
disjunctionForBetweenCondition.add(brojgodina);
disjunctionForBetweenCondition.add(visinadohotka);

criteria.add(disjunction);
criteria.add(disjunctionForBetweenCondition);