Procédé where
de CriteriBuilderCritères requête combiner et prédicats et ou prédicats dans lequel procédé
limite le résultat de la requête en fonction de la combinaison de la restriction spécifiée prédicats
En d'autres termes, concaténer toutes prédicats avec AND. Je passe une liste de prédicats à cette méthode de cette façon:
criteria.where(preds.toArray(new Predicate[0]));
La requête de résultat quelque chose comme ceci:
... where p1 and p2 and p3
cependant ce que j'ai besoin est:
... where p1 and p2 or p3
J'ai essayé pour utiliser deux listes de prédicats, un pour "ANDS" et un autre pour "ORS":
if(preds.isEmpty() && !orPreds.isEmpty()) {
criteria.where(cb.or(orPreds.toArray(new Predicate[orPreds.size()])));
}
else if(!preds.isEmpty() && !orPreds.isEmpty()) {
criteria.where(cb.and(preds.toArray(new Predicate[preds.size()])),
cb.or(orPreds.toArray(new Predicate[orPreds.size()])));
}
else {
criteria.where(preds.toArray(new Predicate[0]));
}
Mais la requête de résultat est le même:
... where p1 and p2 and p3
Toute idée?
Que voulez-vous dire par 'où p1 et p2 ou p3'? 'où (p1 et p2) ou p3'? 'où p1 et (p2 ou p3)'? – perissf