[CriteriaBuilder] Predicate 'or' avec 'and' parenthèse mal placée
Bonjour,
petit soucis avec un CriteriaBuilder
Je souhaiterais avoir le prédicat suivant
Code:
1 2
|
and (P1 <> 'ABANDONED_BY_SYSTEM' or (P2 is not null and P1 = 'ABANDONED_BY_SYSTEM')) |
Et voici le prédicat généré
Code:
1 2
|
and (P1 <> 'ABANDONED_BY_SYSTEM' or (P2 is not null) and P1 = 'ABANDONED_BY_SYSTEM') |
Et voici ma spécification:
Code:
1 2 3 4 5 6 7 8
|
return (root, query, cb) -> {
Predicate abandonedBySystem = cb.equal(root.get(DossierEntity_.dossierStatus), DossierStatus.ABANDONED_BY_SYSTEM);
Predicate noGrantingResponse = cb.isNotNull(root.get(DossierEntity_.grantingResponse));
Predicate noGrantingResponseAndAbandonedBySystem = cb.and(noGrantingResponse, abandonedBySystem);
Predicate or = cb.or(noGrantingResponseAndAbandonedBySystem, abandonedBySystem.not());
return or;
}; |
Si jamais quelqu'un a une idée elle est la bienvenue.
Merci.