您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

用于一对多双向映射的Hibernate和H2“违反参考完整性约束”

用于一对多双向映射的Hibernate和H2“违反参考完整性约束”

您的映射对我来说很奇怪。关系的两边都有一个@JoinColumn,每个都指向另一个表的主键。那似乎不是一对多的关系。

您的OneToMany应该告诉关系的所有者:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "whoDoneAteMe")
public List<Hamburger> getHamburgers() {
    return hamburgers;
}

然后在另一边:

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "fatkid_id")
public FatKid getWhoDoneAteMe() {
    return whoDoneAteMe;
}

您也许也可以进一步优化代码。由于您的FatKid对象可以识别Hamburger对象,并且已经配置了级联,因此您可以执行以下操作:

    session.beginTransaction();
    FatKid fk = new FatKid();
    fk.setName("Darrell");

    Hamburger hamburger_1 = new Hamburger();
    hamburger_1.setDescription("Juicy quarter pounder with cheese");
    hamburger_1.setWhoDoneAteMe(fk);
    fk.getHamburgers().add(hamburger1);

    Hamburger hamburger_2 = new Hamburger();
    hamburger_2.setDescription("Ground buffalo burger topped with bacon and a sunny-side egg");
    hamburger_2.setWhoDoneAteMe(fk);
    fk.getHamburgers().add(hamburger2);

    session.save(fk);
    session.getTransaction().commit();

    sessionFactory.close();

上面的代码应仅通过一次提交操作并在单个事务中保存完整的对象图。

其他 2022/1/1 18:15:16 有481人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶