[英]Hibernate: Is it possible to persist only a child which will cause persisting a parent as well
假设我有一个父表A和一个子表B,它们有一个链接A.id和B.id的外键,问题是此父表和FK是最近创建的,并且存在太多持久化a的位置子表,所以我在等待一种简单的方法来保留父表并将其链接到子表。 是否可以通过使用Hibernate工具来处理此任务? 我试图使用级联,但没有成功,看起来它们仅在我们保留父实体时才起作用。
因此,结构如下:
@Entity
class A {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "a_id")
long id;
}
@Entity
class B {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "b_id")
long id; // FK to a_id
}
class BDao {
void store(B b) {
session.save(b); // to many places
}
}
会给您任何帮助,谢谢!
是的 我已解决此问题,以防万一有人想知道答案,而我将解决方案留在这里。 也许你们花的时间少于我解决相同问题的时间。 因此,首先您需要使用@Inheritance(strategy = InheritanceType.JOINED)批注来描述父实体:
@Entity
@Inheritance(strategy= InheritanceType.JOINED)
@PrimaryKeyJoinColumn(name = "a_id")
public class A {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "a_id")
protected Integer id;
}
然后像这样描述子实体
@Entity
@AssociationOverride(name="a_id", joinColumns = @JoinColumn(name="b_id"))
@PrimaryKeyJoinColumn(name = "b_id")
public class B extends A {
...
}
我离开这里@AssociationOverride是因为在我的情况下,我使用了不同的主键名称,因此也许对某些人也有帮助。
而已! 现在,当您保留一个子实体时,它将创建两行-一行用于父表,另一行用于子表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.