2012-10-28 51 views
0

我以前對Hibernate提出過這個問題的一個變體。但是,我現在正在與Eclipselink合作,但它仍然困擾着我。這是非常簡單的:避免重複JPA多對一

我需要堅持一個地址對象,包括城市名稱在多對一的關係。我希望能夠堅持地址和級聯拯救城市 - 但只有在城市是獨一無二的。根據我的理解,這不是由JPA直接支持?可能的解決方案包括將城市名稱用作城市表格中的唯一標識,並查詢特定城市的城市表格,然後在保存之前將該對象添加到該地址。我已經看到幾個StackOverflow問題/答案似乎表明這是方法(JPA cascade persist - many to one

我在這裏丟失了什麼?有其他更好的方法嗎?

回答

1

是的,解決方案是從數據庫中獲取城市,如果不存在,則將其創建並將其設置爲地址。

這是沒有辦法的。不過,城市名稱並不一定是主要關鍵。我將使用自動生成的非功能性代理鍵作爲PK,並在城市名稱上添加一個唯一約束。這至少可以讓你修改城市名稱中的拼寫錯誤,而不必更新引用它們的千位地址。

+0

感謝您的快速反饋 - 非常感謝。 – skyman