2009-11-12 21 views
1

comme je suis nouveau à Grails et les langages dynamiques, j'ai une question «espérons simple».Grails: Comment combiner findAllBy et findAllByTag

J'ai installé le plugin taggable qui fonctionne bien. Il y a un tableau qui arrive avec des tags. Je collecte pour chaque tag l'ensemble des données avec findAllByTag. Après cela, je l'ai randomisé et j'ai choisi une entrée. Fonctionne très bien. Maintenant, j'ai décidé de ne pas prendre tous les objets de la base de données. J'ai seulement besoin de tous avec une certaine creteria (colonne DB customerID). Cela ressemblerait à ceci:

def customerSet = Customer.findAllBycustomerID(params.customerID) 

j'ai eu deux querys de travail, mais ne peut combiner que je veux. J'ai essayé quelque chose comme

def hits = customerSet.findAllByTag(tag) 

Mais je reçois un

groovy.lang.MissingMethodException: Pas de signature de la méthode: java.util.ArrayList.findAllByTag() est applicable pour les types d'arguments: (java .lang.String) valeurs: [mac]

Je suppose que je ne peux pas faire un findAllByTag sur une liste comme ça.

Ou dois-je faire en quelque sorte comme ceci:

def customerSet = Customer.findAllBycustomerID(params.customerID.findAllByTag(tag)) ??? 

grâce, klaas

Répondre

1

Je ne sais pas si cela fonctionne avec tagable mais vous pouvez utiliser un viseur dynamique avec deux propriétés par exemple .findAllByCustomerIdAndTag (customerId, tag)

Si cela ne fonctionne pas, vous pouvez utiliser un critère, par ex.

Customer.createCriteria().list{ 
    eq('customerId',someCustomerId) 
    tags{ 
     eq('name',someTag') 
    } 
}