JPA 2.0中是否有可能確定嵌入式對象僅嵌入一個對象,而不是嵌入對象?JPA 2.0:一個實體專用的嵌入式對象
在我的情況下,我有一個Address
,我可以分配給Customer
。我希望每個客戶都使用自己的地址對象,並希望創建一個約束,以確保沒有兩個客戶共享實際上相同的對象。
我的代碼如下所示:
@Entity
public Customer {
@Id
@GeneratedValue
private Long id;
@Embedded
private Address address;
// ..
}
@Embeddable
public Address {
private String street;
private String city;
// ..
}
目前,如果我創建了兩個客戶,併爲它們分配相同的Address
對象,然後堅持和閱讀他們,他們再一次分享同一個身份的對象。我想禁止保存與其他客戶共享地址的這類客戶。
如果我明白你的意思,你想創造一個獨特的地址輸入即使地址在數據方面是相同的? – Phani 2012-04-11 15:06:18
@Phani正是。未來對地址的更改應僅影響擁有該地址的一位客戶,並且不會對其他客戶產生任何副作用。解決這個問題的一種Java方法是在設置地址時創建一個地址副本(我假設),但我正在尋找一個基於JPA的解決方案。 – riwi 2012-04-11 15:10:29
如果您沒有重寫equals方法,則理想情況下應該將2個條目存儲到數據庫。請檢查爲該動作生成的sql,以確定是什麼導致它被存儲爲1。 – Phani 2012-04-11 15:12:38