2013-04-10 63 views
1

我有一個實體,包含許多OneToMany關係到其他實體。其中一個實體實際上是一個樹形結構(有三個層次)。JPA合併一個子樹結構

當我更新我的對象(在servlet調用中)時,我更新了所有對象字段,包括樹結構,但僅在根級(第一級)。一旦更新,我做了一個對象的合併。

它工作正常,雖然有點慢。我設置JPA日誌記錄來查看正在執行的實際sql事務,並注意到樹結構總是在數據庫中完全重新生成(即刪除和插入所有對象)。其他領域的情況並非如此,即只有那些已經改變的領域纔會更新。就好像eclipselink(我使用eclipselink)每次都將樹結構視爲新的。

這是正常的行爲嗎?我需要在合併之前掃描樹並更新每個樹節點嗎?

回答

0

什麼是樹結構的id(包括代碼)?

您是否分配了一個新的ID,或者在每次合併之前使ID爲空?

你使用的是orphanRemoval嗎?

這是你如何合併更改(包括代碼)的最大問題。

+0

是的,的確,這確實是一個身份證問題,僅此而已。我被矇蔽了,因爲有些ID正在刷新,有些則沒有。它現在按預期工作。謝謝。 – Thomas 2013-04-11 08:23:31