2010-04-02 32 views
1

我想使用JPA我的Java桌面應用程序的我的持久層,但我也有類似的問題,如描述在JPA - Entity design problem替代JPA

我沒有找到一個解決上述那樣的問題,這就是爲什麼我想要與JPA的其他選擇一起使用。

如果我得到上述問題的解決方案會更好。

+0

我投票結束這個問題作爲重複,因爲我看不到在目前的狀態與http://stackoverflow.com/questions/2562746/jpa-entity-design-problem/有任何區別。 – 2010-04-02 08:38:01

回答

6

IMO處理此類問題的正確方法是使用生成的內部(通常爲Long)ID而不是自然主鍵 - 這消除了整個問題。當然,這需要修改您的數據庫模式。我在我的answer to the other post中包含了一個示例映射。你可能會嘗試Hibernate,它提供了JPA功能的超集(雖然我無法提供Hibernate的解決方案),但是,如果這不可行,並且所提到的解決方案不適合您(btw爲什麼?我的頭頂 - 特別是不知道你的問題與JPA解決方案)。

1

如果你讓jpa爲你的對象分配一個id(例如整數)作爲主鍵的話,事情會變得非常漂亮。你提到的例子中的複雜性只是因爲作者對主鍵的限制

0

正如其他答案所述,生成一個「內部」(代理)鍵......又名「數據存儲」標識。這是JDO規範的一部分(JPA僅支持應用程序標識,而JDO支持數據存儲和應用程序標識)。