如何修复休眠“对象引用未保存的瞬态实例 - 刷新前保存瞬态实例”错误

2022-08-31 04:05:08

当我使用休眠保存对象时收到以下错误

object references an unsaved transient instance - save the transient instance before flushing

答案 1

您应该在集合映射中包含(如果使用 xml)或(如果使用批注)。cascade="all"cascade=CascadeType.ALL

发生这种情况是因为实体中有一个集合,并且该集合具有数据库中不存在的一个或多个项。通过指定上述选项,您可以告诉休眠在保存其父级时将它们保存到数据库中。


答案 2

我相信这可能只是重复的答案,但只是为了澄清,我在映射和.在这两种情况下,事实是我添加到 的对象尚未保存在数据库中。因此,当我将 添加到 中,然后保存 时,休眠会在保存父级时抛出消息。@OneToOne@OneToManyChildParentChildParentParent"object references an unsaved transient instance - save the transient instance before flushing"

在引用中添加,解决了两种情况下的问题。这节省了 和 .cascade = {CascadeType.ALL}Parent'sChildChildParent

很抱歉任何重复的答案,只是想进一步澄清给人们。

@OneToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "performancelog_id")
public PerformanceLog getPerformanceLog() {
    return performanceLog;
}

推荐