9
votes

Y a-t-il un «non in» équivalent dans Gorm?

Est-ce que cela est possible de convertir en Createciteria ()?

def c = VolunteerOpportunity.createCriteria()
def matchingActs = c.list {
    node {
        eq('type', 'act')
    }
    maxResults(10)
}


0 commentaires

5 Réponses :


8
votes

pas essayé moi-même, mais en regardant les API de GRAILS DOC et Hibernate Vous créez des nœuds sur cette carte de constructeur avec les méthodes statiques trouvées dans la classe de restrictions de l'API de critère Hibernate 1 . Alors quelque chose comme xxx

puisque vous enchaînez la méthode dans (qui renvoie un critère) avec la méthode non (qui prend un critère comme argument et renvoie une version annulée)


1 commentaires

merci pour le code d'échantillon. Vous avez une idée sur la manière d'utiliser l'opérateur «non».



21
votes

Merci Sammyrulez pour le code. eu une idée de ça. Testé cela mais ça n'a pas fonctionné. Je l'ai réparé et voici le code de travail final:

def ids = [14400 as long, 14401 as long]

def c = VolunteerOpportunity.createCriteria()
def matchingActs = c.list {
    node {
        eq('type', 'act')
        not { 'in'(ids) }
    }
    maxResults(10)
}


0 commentaires

1
votes

Ceci est la solution:

def resultat=EnteteImputationBudgetaire.createCriteria().get{
            between("dateDebutPeriode", dateDebut, dateFin)

            and{ eq 'natureImputationBudgetaire','FONCTIONNEMENT'  }
            maxResults(1)
        }

        def resultat2=ParametragePlanBudgetaire.createCriteria().list() {
            like('composantBudgetaire','6%')
            if(resultat?.details) {
                not {
                    'in'('composantBudgetaire',resultat?.details?.imputationBudgetaire)
                }
            }
        }


0 commentaires

1
votes

Selon la documentation de Grails sur la création de critères ici , vous pouvez utiliser quelque chose comme ceci: xxx

Dans cet exemple, vous avez une propriété nommée "Âge" et vous voulez obtenir des lignes qui ne sont pas comprises entre 18 et 65. Bien sûr, la partie [18..65] peut être substituée à n'importe quelle liste de valeurs ou de portée dont vous avez besoin.


0 commentaires

1
votes

Se souvenir juste: Dans ce cas, vous n'avez pas à utiliser des parenthèses et vous pouvez utiliser dans la liste , par exemple: xxx


0 commentaires