2010-11-28 8 views
1

j'ai des classes de domaine:grails. Classe de domaine 1: m

package test 

class Credit { 

String name; 


static hasMany = [debts : Debt] 

    static constraints = { 
    } 
} 

et

package test 

class Debt { 


Integer amount; 
Date date; 


static belongsTo =[credits: Credit] 

    static constraints = { 
    } 
} 

besoin: sélectionnez max: 10; order: "desc"; sort: "date" rangées de dettes associées au Сredit.get(id)

Comment puis-je le faire?

solution :

Debt.findAllByCredits(Credit.get(params.id),[max:10, sort:"date",order:"desc"]) 

mais la prochaine question sur cet exemple:

pourquoi, ce travail de code:

def ok = Debt.findAllByCredits(Credit.get(params.id),[max:10, sort:"date",order:"desc"]) 


println "true:" + ok 

mais ce code fonctionne pas correctement:

def dd = new Debt(credits: Credit.get(params.id)) 

def wrong =Debt.findAll(dd) 

println "no: "+ wrong 

tous les temps retournent tous les enregistrements dans la table, pourquoi?

+0

Si vous avez une question différente, vous devriez en créer une nouvelle plutôt que de l'ajouter à une question déjà posée. –

+0

ok, merci. Je le fais maintenant. – user471011

Répondre

1

vous pourriez faire quelque chose comme

def hql = "select d from Debt d where credits = ? order by d.date desc" 
Debt.findAll(hql, [credit], [max:10]) 

vous pourriez avoir à modifier, mais quelque chose devrait fonctionner similaire. Notez également, je suppose que vous avez une instance de crédit qui est le parent de la dette.

Vous pouvez également utiliser les méthodes Grails génère dynamiquement lors de l'exécution, en fonction des propriétés de vos classes

Debt.findAllByCredit(credit, [max:10,sort:"date",order:"desc"] 

encore, vous aurez besoin d'une référence à un objet de crédit.

Vérifiez les docs à

http://grails.org/doc/latest/

spécifiquement la section sur findAll et findAllBy sous les classes de domaine dans la main gauche nav.

+0

maintenant je lis doc, et je vois, que je ne peux pas utiliser: findAllByCredit - Cette méthode n'existe pas, je ne peux utiliser que findAllByAmount et findAllByDate et pas plus :( – user471011

+0

@ user471011 c'est parce que vous avez un crédit de propriété, pas de crédit – hvgotcodes

+0

vous avez raison! Debt.findAllByCredits (Credit.get (params.id), [max: 10, trier: "date", ordre: "desc"]) - fonctionne !!! – user471011

Questions connexes