2011-03-30 108 views
2

我有一個域類是這樣的:懶柱負荷

class Document { 
String mime; 
String name; 
byte[] content; 

static mapping = { 
    content lazy:true; 
} 
} 

,我想啓用延遲加載到「內容」一欄,是因爲應用程序的一些東西,而不需要訪問此列。

但懶惰:真正的選擇沒有工作......任何想法或解決方法?

回答

4

你是什麼意思的應用程序做一些東西?你想要建立什麼?

僅供參考。急切和懶惰的加載通常與關係有關,默認情況下grails啓用了延遲加載。例如,」

Class Book{ 
    static belongsTo = Author 
    String Name 
    Author author 
} 

Class Author{ 
    static hasMany = [books:Book] 
    String Name 
} 

def author = Author.get(author_id) 
def authorBooks = author.books //===> collection with lazy association by default 

在你的代碼是沒有關係的。內容是文件的屬性,因此延遲加載在這裏並不適用。

http://grails.org/doc/1.0.x/guide/5.%20Object%20Relational%20Mapping%20(GORM).html

5

有一些討論here關於使用Hibernate註釋以延遲加載特定列

另一種可能性是將您的Document對象分成兩部分。例如:

class Document { 
    String mime 
    String name 
    DocumentContent content 
} 

class DocumentContent { 
    static belongsTo = [document:Document] 
    byte[] data 
} 

由於這是一個關係,默認情況下,GORM將懶惰地加載DocumentContent。