I am facing a problem with Hibernate EntityManager 3.5.3-Final when it comes to compound predicates.
Example (not the actual code snippet, but the idea should be clear):
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); Predicate predicate1 = criteriaBuilder.conjunction(); Predicate predicate2 = criteriaBuilder.conjunction(); // These are Boolean expression with common Root predicate1.getExpressions().add(expression1); predicate1.getExpressions().add(expression2); predicate2.getExpressions().add(expression3); predicate2.getExpressions().add(expression4); //... query.where(criteriaBuilder.or(predicate1, predicate2));
Now I would expect something like:
SELECT ... FROM ... WHERE (expression1 AND expression2) OR (expression3 AND expression4)
However, in the end I get:
SELECT ... FROM ... WHERE expression1 AND expression2 OR expression3 AND expression4
Am I doing something terribly wrong or is it a sleep issue?
jarekrozanski
source share