2013-03-15 175 views
1

我想要一个模型对象包含另一个关系OneToOne,但我希望第二个对象自动更新时,第一个保存(object.save()),并自动删除首先被删除。JPA OneToOne和OneToMany:更新和删除

我与包含其他对象列表的对象具有相同的需求,并具有与保存/更新和删除相同的要求。在特定情况下:当保存第一个对象时,我希望第二个对象根据第一个对象中的新列表进行更新,创建或删除。

一个类似的例子是一个博客文章,其中可以添加,编辑或删除评论。

我已经做了很多尝试,使用“级联= CascadeType.ALL”等“的mappedBy”时,尝试在单元测试完成用HSQLDB,与我不能AVEC任何sucess ... :-(

你能帮我

感谢,

泽维尔

+0

使用级联通常是要走的路。你有任何错误?你如何检查成功?你能发布代码吗? – kostja 2013-03-15 10:28:25

+0

当我保存第一个对象时级联正在工作,但是对于每次保存,在数据库中创建一个新的第二个对象,并且上一行不会从表中删除...我期望数据库已正确更新:更新第二个对象或删除以前的数据以创建一个新的数据 – xnopre 2013-03-15 10:57:31

+0

如果没有看到代码,很难说出问题所在。请使用它们的映射,equals和hashCode(没有setter getters)和至少一个失败的测试 – kostja 2013-03-15 11:08:50

回答

0

我想我已经找到了问题? - 声明orphanRemoval=true工作不正常 - 后,其不再引用的PostDetails实体应删除一个Post

这似乎是Hibernate的一个问题 - 孤儿删除不能像预期的那样工作。请参阅this post解释如何在Play中解决它。

thisthis似乎是Hibernate的相关bug版本。

+0

谢谢,但这不是同一个问题,我的问题是与OneToOne。我找到了一种解决方案,在网络上看到,OneToMany在List上取代OneToOne,确保始终只有一个实例。有用。 OneToOne似乎没有很好地管理“orphanRemoval = true”。新代码:https://github.com/xnopre/test-play-jpa/tree/67aea06219c8b1026b65c29189e05009d52f2bc0 – xnopre 2013-03-15 17:27:48

+0

@xnopre - 很酷,很高兴你明白了。您可以发布您的解决方案作为答案,并接受它 - 为未来的读者。我会在这里留下我错误的答案供参考。 – kostja 2013-03-15 18:18:48