2010-11-28 207 views
1

我有域類:grails。領域類。 1:米

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"; sort: "date"債務行Сredit.get(id)

我該怎麼辦?

解決方案:

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

如果您有其他問題,則應該創建一個新問題,而不是將其添加到已回答的問題中。 – 2010-11-28 16:57:06

+0

好的,謝謝。我現在就做。 – user471011 2010-11-28 17:05:40

回答

1

你可以做類似

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

您可能需要調整這一點,但類似的事情應該工作。另請注意,我假設您有一個信用實例,即債務的母公司。

您還可以使用的Grails在運行時動態生成的方法,根據您的類

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

再次的屬性,您將需要一個信貸對象的引用。

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

具體規定域類在左手導航上的findAll和findAllBy部分退房的文檔。