【发布时间】:2013-03-03 23:45:53
【问题描述】:
我希望一个模型对象包含另一个具有 OneToOne 关系的对象,但我希望在保存第一个对象时自动更新第二个对象 (object.save()),并在删除第一个对象时自动删除。
我对包含其他对象列表的对象有相同的需求,对保存/更新和删除有相同的要求。对于特殊情况:保存第一个对象时,我希望根据第一个对象中的新列表更新、创建或删除第二个对象。
一个类似的例子是带有可以添加、编辑或删除的 cmets 的博客文章。
我已经做了很多尝试,使用“cascade = CascadeType.ALL”和其他“mappedBy”,这些尝试是在使用 HSQLDB 的单元测试中完成的,但我无法取得任何成功...... :-(
你能帮帮我吗?
谢谢,
泽维尔
【问题讨论】:
-
使用级联通常是要走的路。你有任何错误吗?你如何检查成功?可以发一下代码吗?
-
当我保存第一个对象时,级联正在工作,但是对于每次保存,都会在数据库中创建一个新的第二个对象,并且不会从表中删除前一行...我希望数据库已正确更新:更新第二个对象或删除以前的数据以创建一个新对象
-
不看代码就很难判断问题出在哪里。请发布实体及其映射、equals 和 hashCode(没有 setter getter)以及至少一个失败的测试
-
github.com/xnopre/test-play-jpa。这不是我的产品代码,而是示例代码。在这段代码中,OneToMany 似乎没问题,但在 JpaTests:83 测试失败:DB 中有 2 个 PostDetails 而不是 1 个,之前和未使用的 PostDetails 不会被删除
-
给未来的读者:链接到原始代码:github.com/xnopre/test-play-jpa/tree/…
标签: jpa