2012-04-25 181 views
0

我有一個實體(人),其中包含一個地址列表。這個UI實際上只允許爲每個名稱輸入一個地址。JPA合併包括兒童

用戶可以創建一個人,然後添加地址。在數據庫中,我有一個人行和一個地址行。用戶然後可以通過UI更新地址。我在實體管理器上調用合併,以便使用同一個人。問題是該地址未合併,但添加了新行。因此我有一個人行和兩個地址行。只有第二個地址行有效。

我對這種關係的代碼是:

@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE}, mappedBy = "person") 
@OrderBy("id asc") 
private List<Address> addresses; 

我可以任意添加註釋強迫孩子要合併?或者我必須自己手動執行此操作嗎?

理想情況下,在上面的場景中,Person表中有一行,地址表中有一行。

由於

回答

2

合併()將合併到現有的對象,如果ID的現有對象相匹配。確保地址的Id是相同的。

此外,如果您只有一個地址,爲什麼使用OneToMany,只需使用OneToOne。

+0

嗨,詹姆斯,非常感謝。通過設置地址ID它正確地合併。目前我們是一對多的,因爲用戶界面處於第一階段。它最終也會有一對多的關係。謝謝 – RNJ 2012-04-25 13:53:21