Tôi gặp vấn đề với Hibernate EntityManager 3.5.3-Final khi nói đến các biến vị ngữ phức hợp.JPA 2.0 Tiêu chí và nhóm các Dự báo
Ví dụ (không đoạn mã thực tế, nhưng ý tưởng phải rõ ràng):
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));
Bây giờ, tôi mong chờ một cái gì đó như:
SELECT ... FROM ... WHERE (expression1 AND expression2) OR (expression3 AND expression4)
Tuy nhiên tôi kết thúc với:
SELECT ... FROM ... WHERE expression1 AND expression2 OR expression3 AND expression4
Tôi đang làm điều gì đó hết sức sai hoặc là vấn đề Hibernate?
Đó là một sự xấu hổ mà nhóm không rõ ràng hơn nhưng theo như kết quả cuối cùng là có liên quan của bạn tất nhiên là đúng. – jarekrozanski
Bạn nói đúng, nhóm rõ ràng sẽ tốt hơn nhiều. –