【发布时间】:2014-07-17 07:57:38
【问题描述】:
假设我有这种休眠关系。
class A{
@OneToOne(orphanRemoval = true, cascade = {CascadeType.ALL})
@JoinColumn(name = "b_id", nullable = false)
@Getter
@Setter
@XmlElement
private B b;
}
还有这个
class B{
@OneToOne
@JoinColumn(name = "a_id")
@Getter @Setter
@XmlTransient
private A a;
}
在某些时候,我想保存我的类 A,这是第一次,所以在数据库中还不存在,“但是”B 已经存在,因为之前保存在另一个事务中但不是由 A 级联,所以与B 表上的 A 仍然为空。现在有了这个当前配置,我收到了这个异常。
org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing
那么,我需要在 A 上做哪些配置才能持久化 A,并将与 A 的关系放入 B?
问候。
【问题讨论】:
-
对于
OneToOne双向映射,@JoinColumn应仅包含在所有者端。
标签: java spring hibernate jakarta-ee