首页 > Java > java教程 > 如何修复 Hibernate 的'对象引用未保存的瞬态实例”错误?

如何修复 Hibernate 的'对象引用未保存的瞬态实例”错误?

DDD
发布: 2024-12-13 07:20:14
原创
197 人浏览过

How to Fix Hibernate's

修复 Hibernate“对象引用未保存的瞬态实例”错误

尝试时会发生 Hibernate 中的“对象引用未保存的瞬态实例”错误在未正确指定级联的情况下保存具有未保存的相关对象的对象

原因:

当实体的集合属性包含尚未保存到数据库的新实例时,会出现此错误。 Hibernate 尝试在父对象持久化时自动保存这些新实例,但如果未正确设置cascade 属性,则会失败。

解决方案:

解决此问题,您需要在集合映射上指定级联属性。这告诉 Hibernate 在保存父对象时自动保存相关对象。

如果使用 XML 映射,请将以下内容添加到集合映射中:

<set name="relatedObjects" inverse="true" cascade="all">
    <key column="parent_id"/>
    <one-to-many class="RelatedObject" column="related_id"/>
</set>
登录后复制

如果使用注释,请添加以下是您的集合属性:

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Set<RelatedObject> relatedObjects;
登录后复制

通过指定cascade=all,您指示Hibernate将相关对象与父对象一起保存在一个单笔交易。这可确保所有必要的对象都保存到数据库中,并避免“未保存瞬态实例”错误。

以上是如何修复 Hibernate 的'对象引用未保存的瞬态实例”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板