在Grails中查询多对多关系时出错

时间:2009-11-16 14:12:47

标签: grails

class Address {
    static hasMany = [addressGroups: AddressGroup]
    ...
}

class AddressGroup {
    static belongsTo = Address
    static hasMany = [addresses: Address]

    String notation;
    ...
}

我尝试获取给定AddressGroup的所有地址。

我的代码:

def params = [max: 10]
def addressGroup = AddressGroup.findByNotation("asdf")
def addresses = Address.findAllByAddressGroups(addressGroup, params)

错误消息:没有为参数2指定值

记录的SQL语句:

select ... from ADDRESSES this_ where this_.id=10 order by this_.id asc limit ** NOT SPECIFIED **

......完全错误。

有什么想法吗?

我可以通过使用addressGroup.addresses获取地址(并且可以正常工作!),但我想在分页表中显示它,所以我需要max / offset params。

2 个答案:

答案 0 :(得分:1)

我不认为动态查找器会采用您需要的分页参数。

查看GORM Labs Plugin,其中介绍了GORM的一些扩展。 “Paginated HasMany属性”部分向您展示了如何做您正在寻找的内容。

答案 1 :(得分:1)

嗯......我尝试使用GORM扩展程序,但仔细观察之后我发现它并不是我需要的。

我努力使用Criteria API:

def c = Address.createCriteria()
def results = c.list {
   if(params.addressGroup) {
      addressGroups {
         eq('id', params.addressGroup)
      }
   }

   maxResults(params.max)
   order(params.sort, params.order)    
}