【问题标题】:grails. Domain class. 1:m圣杯。域类。 1:米
【发布时间】:2010-11-29 00:23:17
【问题描述】:

我有域类:

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: 10order: "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

总是返回表中的所有记录,为什么?

【问题讨论】:

  • 如果您有不同的问题,您应该创建一个新问题,而不是将其添加到已回答的问题中。
  • 好的,谢谢。我现在就做。

标签: grails grails-orm


【解决方案1】:

你可以做类似的事情

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

你可能需要调整它,但类似的东西应该可以工作。另请注意,我假设您有一个 Credit 实例,它是 Debts 的父级。

您还可以使用 Grails 在运行时根据类的属性动态生成的方法

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

同样,您将需要对信用对象的引用。

查看文档

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

特别是左侧导航中域类下的 findAll 和 findAllBy 部分。

【讨论】:

  • 现在我阅读了文档,我明白了,我无法使用:findAllByCredit - 此方法不存在,我只能使用 findAllByAmount 和 findAllByDate ,不能再使用了:(
  • @user471011 那是因为你有财产信用,而不是信用。
  • 你是对的! Debt.findAllByCredits(Credit.get(params.id),[max:10, sort:"date",order:"desc"]) - 有效!!!
  • @user471011,很高兴它成功了。现在我会无耻地要求勾选和/或投票;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 2011-11-03
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
相关资源
最近更新 更多