【问题标题】:Grails when to use merge() instead of save()?Grails 何时使用 merge() 而不是 save()?
【发布时间】:2015-01-02 15:37:07
【问题描述】:
您好,有人建议我何时使用 merge() 而不是 save()?
我有一些问题,比如当我使用 save() 方法保存域时,它在某些情况下工作正常,但在某些情况下它会为我创建 "org.hibernate.LazyInitializationException" 异常。
我可以直接使用 merge() 方法而不是 save() 方法来保存域实例吗?
【问题讨论】:
标签:
hibernate
jakarta-ee
grails
【解决方案1】:
您可以看到merge() 和save() 方法都在内部调用save() 方法,不同之处在于它们的行为,即如果您将对象存储在HTTP 会话中并且稍后想要访问该对象但该对象已失去其持久性在上下文中,merge() 方法将分离对象的状态合并回当前的 Hibernate 会话。但是,如果您在分离对象上调用 save() 方法,您将面临您提到的一个性感异常(org.hibernate.LazyInitializationException)。
欲了解更多信息documentation。