如何在OneToOne单向关系中插入父级和子级

时间:2017-11-09 16:56:51

标签: java spring-boot

我正在启动一个Web应用程序,我有以下结构:

+--------------------------+
| Company                  |
|--------------------------|
| id            PK, NN, AI |
| attibute1                |
| attribute2               |
+--------------------------+

+--------------------------+
| CompanyProfile           |
|--------------------------|
| id            PK, NN, AI |
| id_company    FK, NN     |
| attribute3               |
| attribute4               |
| attribute5               |
+--------------------------+
 public class Company {
    @Id
    @GeneratedValue
    @Column(unique = true, nullable = false)
    private Long id;

    private String attribute1;

    private String attribute2;

    @OneToOne(cascade = { CascadeType.ALL })
    @JoinColumn(name = "id_company", unique = true)
    private CompanyProfile companyProfile;

    // ...
}
public class CompanyProfile {
    @Id
    @GeneratedValue
    @Column(unique = true, nullable = false)
    private Long id;

    private String attribute3;

    private String attribute4;

    private String attribute5;

    // ...
}

我使用以下JSON向一个控制器发送POST请求:

{
    "attribute1": "value 1",
    "attribute2": "value 2",
    "companyProfile": {
        "attribute3": "value 3",
        "attribute4": "value 4",
        "attribute5": "value 5"
    }
}

所以现在我想执行命令.save()并让应用程序在其各自的表中插入公司,然后将companyProfile一次性插入其各自的表中。但是这没有发生,而且我得到了这个:Error Code: 1364. Field 'id_company' doesn't have a default value

我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

为了你的坚持,我认为你必须坚持下面的顺序,

坚持公司对象,然后

将Company对象设置为CompanyProfile和

最后坚持CompanyProfile