Serialization 对对象的急切抓取

Serialization 对对象的急切抓取,serialization,grails,groovy,Serialization,Grails,Groovy,我正在序列化一个对象,该对象具有很深的对象层次结构 反序列化之后,我只能访问序列化之前对象中可用的字段。剩下的,我得到LazyInitializationException class A { List<B> objs } class B { C c } class C { D d } A类{ 列出对象 } B类{ 丙 } C类{ D } 最初,在访问a.objs*.c时,我常常得到LazyInitializationException 然后我在序列化

我正在序列化一个对象,该对象具有很深的对象层次结构

反序列化之后,我只能访问序列化之前对象中可用的字段。剩下的,我得到LazyInitializationException

class A {
    List<B> objs
}

class B {
    C c
}

class C {
    D d
}
A类{
列出对象
}
B类{
丙
}
C类{
D
}
最初,在访问a.objs*.c时,我常常得到LazyInitializationException 然后我在序列化之前执行了一个循环:a.objs.each{it.c} 现在,我在a.objs*.c.d处得到LazyInitializationException,而不是a.objs*.c


如何确保对象在序列化之前从DB获取每个引用?

我能想到的唯一方法是遍历对象图,初始化找到的任何惰性集合

唯一的其他方法是在每个域类中使用映射闭包来禁用延迟加载


在使用refresh()方法反序列化后,您不能从数据库中刷新对象吗?

目前我采用的是遍历方法,但是每天我都会收到一个新用例的LazyInitializationException,并且我添加了一个新的遍历:)我不能禁用延迟加载,因为我只希望在序列化时进行深入的即时抓取&在应用程序中没有其他查询。序列化对象由历史快照组成。例如:我可能需要查找一年前某人的地址,而不是当前地址。