Grails域类中的延迟列加载

时间:2011-03-30 21:43:54

标签: hibernate grails gorm

我有这样的域类:

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

 static mapping = {
  content lazy:true;
 }
}

我想对“内容”列启用延迟加载,因为应用程序可以执行某些操作而无需访问此列。

但懒惰:真实选项不起作用......任何想法或解决方法?

2 个答案:

答案 0 :(得分:5)

关于使用Hibernate注释来懒惰加载特定列,有一些讨论here

另一种可能性是将Document对象分成两部分。像这样:

class Document {
    String mime
    String name
    DocumentContent content
}

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

由于这是一种关系,GORM默认会懒惰地加载DocumentContent。

答案 1 :(得分:4)

你的意思是应用程序做了些什么?你想要建立什么?

FYI。渴望和延迟加载通常与关系有关,默认情况下,grails启用了延迟加载。 e.g。“

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

在你的代码中没有任何关系。 content是Document的一个属性,因此延迟加载不适用于此。

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