2010-11-28 8 views
1

i haben Domain-Klassen:Grillen. Domänenklasse 1: m

package test 

class Credit { 

String name; 


static hasMany = [debts : Debt] 

    static constraints = { 
    } 
} 

und

package test 

class Debt { 


Integer amount; 
Date date; 


static belongsTo =[credits: Credit] 

    static constraints = { 
    } 
} 

Notwendigkeit: wählen max: 10; order: "desc"; sort: "date" Reihen von Debt mit der Сredit.get(id) verbundenen

Wie kann ich es tun?

Lösung:

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

aber nächste Frage zu diesem Beispiel:

warum dieser Code Arbeit:

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


println "true:" + ok 

aber dieser Code nicht korrekt funktionieren:

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

def wrong =Debt.findAll(dd) 

println "no: "+ wrong 

alle Zeit alle Datensätze in Tabelle zurück, warum?

+0

Wenn Sie eine andere Frage haben, sollten Sie eine neue Frage erstellen, anstatt sie zu einer bereits beantworteten Frage hinzuzufügen. –

+0

ok, danke. Ich mache es jetzt. – user471011

Antwort

1

Sie so etwas wie

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

Sie, dass vielleicht haben zwicken tun könnten, aber etwas sollte ähnlich funktionieren. Beachten Sie auch, ich nehme an, dass Sie eine Instanz des Kredits haben, der das Elternteil der Schulden ist.

Sie können auch die Methoden verwenden, Grails dynamisch zur Laufzeit, basierend auf den Eigenschaften der Klassen

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

wieder, müssen Sie einen Verweis auf ein Kredit-Objekt erzeugt.

Schauen Sie sich die Dokumentation auf

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

speziell den Abschnitt über findAll und findAllBy unter Domain-Klassen in der linken nav.

+0

jetzt lese ich doc, und ich sehe, dass ich nicht verwenden kann: findAllByCredit - Diese Methode existiert nicht, ich kann nur findAllByAmount und findAllByDate verwenden und nicht mehr :( – user471011

+0

@ user471011 das ist, weil Sie eine Eigenschaft Credits haben, nicht Kredit. – hvgotcodes

+0

Du hast Recht! Debt.findAllByCredits (Credit.get (params.id), [max: 10, Sortierung: "Datum", Reihenfolge: "desc"]) - funktioniert !!! – user471011

Verwandte Themen