2013-03-27 74 views
2

所以我有有一個對他們之間的許多連接兩個班...Grails的一對多有限制的返回兒童

class A { 
    static hasMany = {bs: B} 
} 

class B { 
    String name 
} 

現在我創建一個對象和100b對象添加到其列表...

現在,當我調用A.get(1)並訪問Bs時,它會將所有100個對象加載到內存中。我想限制這10 B對象,並有另一種方法返回下一個10等。

有沒有簡單的方法來做到這一點?到目前爲止,我看到這樣做的唯一方法是不會直接訪問B對象,並有一個幫助方法來獲取它們。

所以,我在找的是尋呼的一對多關聯

感謝 克里斯

回答

0

可以在mappings塊配置batchSizehasMany

static mapping = { 
    bs batchSize: 10 
} 
+0

,然後我怎麼才能到下一個10? – 2013-03-27 20:09:43

+0

實際上所有的批量大小確實是加載它們在包中......所以通常如果你不指定在這個協會的gorm連接grails會在我的例子101查詢... 1查詢A和100​​個查詢來獲得每個B ...現在批量大小,它只會做11 ... 1的A和10每個10 B ... 但我的問題是,我只想加載前10個B,當我點擊其他按鈕,然後它會轉到下一個10 B ...我在尋找的是一對多協會的分頁 – 2013-03-27 20:13:44

0

你可以使用標準的params屬性來做到這一點,它們通常用於獲得分頁結果集。看看如何與他們合作名單方法

  • params.min〜最小數目列出
  • params.max〜最大數量列出
  • params.offset〜發件人第一偏移結果,列出從

查看更多在這裏: http://grails.org/doc/2.2.0/ref/Domain%20Classes/list.html

+0

這是通過'B.list()'直接訪問B的時候。問題是如何通過A來訪問Bs,例如'someA.bs' – Wonko 2015-09-08 08:08:44