2011-02-16 53 views
4
我使用Oracle和Grails的1.3.7

,並有這樣的情況:Grails的 - 的hasMany已經太多了,需要限制的get()導致甲骨文

class Publisher { 
    static hasMany = [books : Book] 
} 
class Book { 
    Publisher pub 
    Date datePublished 
} 

PublisherController

def show = { 
    def publisherInstance = Publisher.get(params.id) 
    ... 
} 

讓我們假裝每個出版商都有數千本書。 Publisher.get(params.id)publisherInstance將附加大量書籍後。在控制器顯示操作中,是否可以對由datePublished顯示的書籍進行分頁?我在和Criteria一起玩,但沒有任何運氣。

謝謝!

回答

4

當您加載發佈服務器時,直到您訪問books收藏時纔會加載圖書 - 正是因爲這個原因,它才延遲加載點播。如果您想檢索一些出版商的書籍,請使用查詢,例如

def publisherInstance = Publisher.get(params.id) 

int offset = ... 
def books = Book.findAllByPublisher(publisherInstance, [max: 10, offset: offset]) 

並選擇正確的頁面,從分頁參數中計算offset

+0

我們也從`去(太)很多「,以明確的標準/發現者。大量數據需要特殊處理,每次訪問「書籍」字段時都無法想到它。 – 2011-02-17 10:09:11

2

而是動態取景器的,一般情況下,你可以使用標準:

class Book { 
     static belongsTo = [publisher: Publisher] 
} 

而獲得出版商的10本書籍列表中的「2」

offset = 0 
// Get books of publisher 
def queryResult = Book.createCriteria().list(max: 10, offset: offset) {     
       publisher { 
        eq("id", 2) 
       } 
      }