2010-11-28 18 views
1

私はドメインクラスを持っています:グレイル。ドメインクラス。 1:m

package test 

class Credit { 

String name; 


static hasMany = [debts : Debt] 

    static constraints = { 
    } 
} 

package test 

class Debt { 


Integer amount; 
Date date; 


static belongsTo =[credits: Credit] 

    static constraints = { 
    } 
} 

必要:max: 10を選択してください。 order: "desc"; Сredit.get(id)に関連するsort: "date"行の債務

どうすればいいですか?

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

なぜこのコードが動作するのですか?

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


println "true:" + ok 

しかし、このコードは正しく動作しません。

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

def wrong =Debt.findAll(dd) 

println "no: "+ wrong 

いつもテーブルのすべてのレコードを返します、なぜですか?

+0

質問が異なる場合は、既に回答済みの質問に追加するのではなく、新しい質問を作成する必要があります。 –

+0

よろしくお願いいたします。私は今それをする。 – user471011

答えて

1

あなたはそれを微調整する必要がある場合があります

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

ような何かを行うことができますが、似たような作業をする必要があります。また、私はあなたが債務の親である信用のインスタンスを持っていると仮定しています。

また再び、あなたは信用オブジェクトへの参照が必要になりますあなたのクラス

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

の性質に基づいて、Grailsの実行時に動的に生成する方法を使用することができます。

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

で左側のナビゲーションでドメインクラスの下のfindAllとfindAllByに特にセクションをドキュメントをチェックしてください。

+0

私はdocを読んで、私は使用できません。findAllByCredit - このメソッドは存在しません。findAllByAmountとfindAllByDateだけを使用できます。( – user471011

+0

@ user471011あなたはクレジットではなくプロパティクレジットを持っているので – hvgotcodes

+0

あなたは正しいです!Debt.findAllByCredits(Credit.get(params.id)、[max:10、sort: "date"、order: "desc"]) - 作品!!! – user471011

関連する問題