Querydsl recherche dans une collection
Bonjour,
J'ai le problème suivant:
Je dois faire une requete générique, mais il me faut une exclusion dans une sous requète.
comment peut t'on définir qu'une collection ne doit pas contenir une certaine expression ?
Pour le moment, j'utilise l'expression suivante : collectionPathBase.size().eq(1) mais ça ne fonctionne pas dans tout les cas voulu (solution transitoire)
et j'aimerais savoir que la collection (Set de QTextMehrsprachig) ne contient pas : QTextMehrsprachig.textMehrsprachig.locale.eq(guiLocale).
Je n'arrive pas à créer une expression qui exprime cela.
Le bout code fonctionnel que j'ai développé:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
if (pathPoint.getPathType().equals(ListPath.class) || pathPoint.getPathType().equals(SetPath.class)) {
if (guiLocale != null) {
CollectionPathBase collectionPathBase = ((CollectionPathBase) pathPoint.getPathField().get(pathPoint.getPathEntity()));
if (collectionPathBase.any().getType().equals(TextMehrsprachig.class)) {
sortOrder = setSortOrder(order);
List<Locale> list = new ArrayList();
list.add(guiLocale);
list.add(defaultLocale);
BooleanBuilder builderTextMehr = new BooleanBuilder(QTextMehrsprachig.textMehrsprachig.locale.eq(guiLocale).or(QTextMehrsprachig.textMehrsprachig.locale.eq(defaultLocale).and(collectionPathBase.size().eq(1)))); |
Auriez-vous une idée ?
Merci d'avance.
Emmanuel