【发布时间】:2012-01-18 00:50:12
【问题描述】:
我注意到,当从 HttpSession 中获取域对象并将其附加回休眠会话时,它不会附加任何作为属性的域类。
例如,假设 Foo 和 Bar 都是域类,而 Foo 是一个分离的 Domain 类有一个属性 Bar 这会失败:
myFoo.attach()
println myFoo.bar.someBarProperty //LazyInitializationException
但这成功了
myFoo.attach()
myFoo.bar.attach()
println myFoo.bar.someBarProperty //Ok
是否有任何 myFoo.attachRecursively() 或类似的东西可以避免上述情况?对于简单的情况,这没什么大不了的,但对于较大的对象图,它可能会很混乱。
请注意,我意识到为此目的使用 HttpSession 并不是最佳实践,而且我仅在非常特殊的情况下通过 flash 范围使用它,因此请避免使用“只需传递 id 并重新加载”类型答案:)
【问题讨论】:
-
对bar的引用有什么级联设置?
-
好问题。就我而言, foo 属于 bar。也许这就是它不会隐式重新附加的原因。 static belongsTo = [bar: Bar]
标签: hibernate session grails grails-orm httpsession