2013-03-15 314 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