hibernate restrictions et / ou ordre
Question
petites questions sur Restrictions.or et Restrictions.and
Si je fais quelque chose comme ça:
...
criterion = criterionA;
criterion = Restrictions.and(criterion, criterionB);
criterion = Restrictions.or(criterion, criterionC);
criterion = Restrictions.and(criterion, criterionD);
Cela sera-t-il traité comme:
(A and B) or (C and D) (following mathematical conventions)
Ou sera-t-il traité dans l'ordre dans lequel les restrictions ont été ajoutées:
(((A and B) or C) and D)
Veuillez également ajouter des références s'il y en a ...
La solution
Il devrait être traité comme ce dernier
(((A and B) or C) and D)
Vous pourriez faire
criterion = Restriction.or(Restrictions.and(criterionA, criterionB), Restrictions.and(criterionC, criterionD))
Si vous voulez la première solution
Autres conseils
il n'y a pas de règles de priorité (comme dans un langage de programmation ou dans un analyseur CFG), l'ordre des appels de méthode détermine sans équivoque l'expression.
(A et B) ou (C et D) doivent être traduits en:
import static org.hibernate.criterion.Restrictions.*;
...
criterion = or(and(A, B), and(C,D));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow