我想使用JPA我的Java桌面應用程序的我的持久層,但我也有類似的問題,如描述在JPA - Entity design problem替代JPA
我沒有找到一個解決上述那樣的問題,這就是爲什麼我想要與JPA的其他選擇一起使用。
如果我得到上述問題的解決方案會更好。
我想使用JPA我的Java桌面應用程序的我的持久層,但我也有類似的問題,如描述在JPA - Entity design problem替代JPA
我沒有找到一個解決上述那樣的問題,這就是爲什麼我想要與JPA的其他選擇一起使用。
如果我得到上述問題的解決方案會更好。
IMO處理此類問題的正確方法是使用生成的內部(通常爲Long
)ID而不是自然主鍵 - 這消除了整個問題。當然,這需要修改您的數據庫模式。我在我的answer to the other post中包含了一個示例映射。你可能會嘗試Hibernate,它提供了JPA功能的超集(雖然我無法提供Hibernate的解決方案),但是,如果這不可行,並且所提到的解決方案不適合您(btw爲什麼?我的頭頂 - 特別是不知道你的問題與JPA解決方案)。
如果你讓jpa爲你的對象分配一個id(例如整數)作爲主鍵的話,事情會變得非常漂亮。你提到的例子中的複雜性只是因爲作者對主鍵的限制
正如其他答案所述,生成一個「內部」(代理)鍵......又名「數據存儲」標識。這是JDO規範的一部分(JPA僅支持應用程序標識,而JDO支持數據存儲和應用程序標識)。
我投票結束這個問題作爲重複,因爲我看不到在目前的狀態與http://stackoverflow.com/questions/2562746/jpa-entity-design-problem/有任何區別。 – 2010-04-02 08:38:01