Grails.Доменный класс.1: м - PullRequest
1 голос
/ 28 ноября 2010

у меня есть классы домена:

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

все время возвращать все записи в таблице, почему?

1 Ответ

1 голос
/ 28 ноября 2010

вы могли бы сделать что-то вроде

 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 в разделе «Классы доменов» в левой навигационной панели.

...