【发布时间】:2021-01-27 17:25:13
【问题描述】:
我最近需要从嵌入实体映射一对一实体:
@Entity
public class A {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Embedded
private B b;
//getters and setters
}
@Embeddable
public class B {
@OneToOne(mappedBy="a", cascade = CascadeType.ALL, orphanRemoval = true)
private C c;
//getters and setters
}
@Entity
public class C {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToOne
@JoinColumn(name="a_id")
private A a;
//other fields, getters and setters
}
当我们创建、更新实体 c 的信息并删除 a(并因此删除 c)时,此映射正常工作。
问题是当我们尝试通过更新删除C时,真正发生的是休眠更新实体C并将a_id字段设置为null。这会导致对象 C 未附加到任何实体 A。
【问题讨论】:
标签: java hibernate jpa one-to-one embeddable