栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JPA多对一关系-仅需保存ID

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JPA多对一关系-仅需保存ID

该错误消息表示您的对象图中有一个瞬态实例,没有明确保留。简短回顾一下对象在JPA中可以具有的状态:

  • 瞬态 :尚未存储在数据库中的新对象(因此对于实体管理器而言是未知的)。没有设置ID。
  • 托管 :实体管理器跟踪的对象。托管对象是您在事务范围内使用的对象,一旦提交事务,对托管对象所做的所有更改将自动存储。
  • 分离的 :提交转换后仍可访问的先前管理的对象。(事务外部的托管对象。)设置了ID。

错误消息告诉您,正在使用的(托管/分离)驱动程序对象持有对Hibernate未知(瞬态)的Car对象的引用。为了使Hibernate了解从驱动程序引用的任何未保存的Car实例也应保存,您可以调用EntityManager的persist-
method。

另外,您可以在持久性上添加一个层叠(我想,只是从我的头顶上还没有测试过),它将在持久化驱动程序之前在Car上执行持久化。

@ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.PERSIST)@JoinColumn(name = "CAR_ID")private Car car;

如果您使用entitymanager的合并方法来存储驱动程序,则应

CascadeType.MERGE
改为添加,或两者都添加:

@ManyToOne(fetch=FetchType.LAZY, cascade={ CascadeType.PERSIST, CascadeType.MERGE })@JoinColumn(name = "CAR_ID")private Car car;


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426572.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号