2010-11-28 117 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部分退房的文档。