栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用于一对多双向映射的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();

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/381592.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号