如何像OneToMany一样为OneToOne创建外键?

时间:2017-12-19 11:06:19

标签: hibernate

以下是json,我想解析它并使用hibernate将其保存到mysql_db

{
"company":{"name":"test","location":"test"},
"spouse":{"name":"test","year":"test"},
"sons":[
{"name":"test","year":"test"},
{"name":"test","year":"test"}]
}

以下是我的父实体

public class Parent {
private Company company;
private Spouse spouse;
private List<Son> sons;

@OneToOne(targetEntity = Company.class, cascade = CascadeType.ALL)
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "parent_id")
public Company getCompany() {
    return company;
}

@OneToOne(targetEntity = Son.class, cascade = CascadeType.ALL)
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "parent_id")
public Spouse getSpouse() {
    return spouse;
}

@OneToMany(mappedBy="record",targetEntity = Son.class, cascade = CascadeType.ALL)
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "parent_id")
public List<Son> getSons() {
    return sons;
}
}

我希望除了Person之外的所有表都有外键parent_id,不幸的是当我使用OneToOne注释时,公司和配偶的外键是在Person表上创建的。上面的代码不起作用,因为我有重复的Parent键。如果不改变父母的字段,我该如何在公司和配偶上创建外键?

我搜索了OneToOne的mappedBy字段的功能,但它没有用。对于我们无法切换表来创建外键的用户来说是不友好的吗?

任何解决方案或解释都将受到赞赏。

0 个答案:

没有答案