首页 > 解决方案 > 休眠manyToOne FK不保存

问题描述

我正在尝试使用休眠将类实例列表保存在父对象中。子实例应通过生成的父 ID“CONTRACTID”映射到父实例。

家长:

    @Id
    @Column(name = "CONTRACTID")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "id_Sequence")
    @SequenceGenerator(name = "id_Sequence", sequenceName = "ID_SEQ_CONTRACT")
    private Long contract_id;

接着

    @OneToMany(targetEntity = CustomerGroup.class, fetch = FetchType.LAZY, cascade = {CascadeType.ALL}, mappedBy = "contractId")
    private List<CustomerGroup> customerGroups;

孩子:

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "CONTRACTID", foreignKey=@ForeignKey(name="CONTRACTID_FK"))
    private ContractHolder contractId;

也试过没有foreignKey=@ForeignKey(name="CONTRACTID_FK")

我在数据库中看到两个字段都存在,父母 ID 在 .save 上按预期生成,但在保存父母时 CustomerGroup 的 FK 字段保持为空。

我在这里做错了什么?

编辑:

在为父对象设置所有需要的值后,保存代码是 Database.class 中非常简单的一行,CustomerGroup 的列表也设置为父对象并正确保存,但不是 FK 自动生成的 id

contractRepo.save(contract);

编辑2:

如果我尝试在保存之前将父对象设置为 childeren 的 @JoinColumn。喜欢

customerGroup.setContractId(contractHolder);

我得到了似乎是一个无限循环的东西。该死的

标签: hibernatespring-bootforeign-keys

解决方案


推荐阅读