已存在子级的java持久化实体
我正在尝试将新实体父实体与数据库中已存在的子实体持久化。我不想在父对象持久化期间更新子对象,只想创建一个关系。当我从前端发送json时,如下所示:
{“child”:{“id”:3}
在保存时,我得到:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing
@Entity
class Parent {
@ManyToOne(optional = false)
@JoinColumn(name = "CHILD_ID", referencedColumnName = "CHILD_ID")
private Child child;
}
@Entity
class Child {
@Id
@Column(name="CHILD_ID")
private Long id;
}
# 1 楼答案
不能。请将@manyToOne注释的可选属性设置为true,或者检索子对象的代理实例并将其设置为父对象
# 2 楼答案
# 3 楼答案
使用child_id加载现有子对象,然后将其设置为“注入父对象”和“保存父对象”