假设我有一个父表a和一个子表b,它们有一个链接a.id和b.id的外键,问题是这个父表和fk是最近创建的,并且有太多的地方可以持久化子表,所以我在等待一个简单的方法来持久化父表并将其链接到子表。是否可以使用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
}
}
会很乐意帮忙的,谢谢!
1条答案
按热度按时间7jmck4yq1#
是 啊!我已经修好了,以防有人想知道答案,我把我的解决方案留在这里。也许你们花在解决同样问题上的时间会比我少。因此,首先需要使用@inheritation(strategy=inheritancetype.joined)注解来描述父实体:
然后将子实体描述为
我把@associationoverride放在这里是因为在我的例子中,我有不同的主键名,所以也许它也对某些人有帮助。
就这样!现在,当您持久化子实体时,它将创建两行—一行用于父表,另一行用于子表。