我有我覺得必須是一個共同的問題:我有一個Communication
對象,描述與Person
溝通的方式。當然,我在一個數據表中顯示一個人的實例Set<Communication>
。我希望最終用戶能夠從該表中動態添加和刪除行。如何編輯,添加和刪除設置中的瞬態實體?
這兩個對象基於其數據庫PK通常使用equals()
和hashCode()
。 PK由postgresql序列生成(列爲serial
)。這在這裏是不夠的,因爲我只能用一個null
PK添加一個(瞬態)元素。
hibernate manual提供的唯一選項是在業務等價方面實現equals和hashCode。由於通信對象基本上是一個榮耀String
,這是不可能的。用戶需要編輯對象的每個方面。
我曾經想過創建一個序列服務,爲臨時實體「保留」一個id並在創建時將它分配給對象。但是我擔心這會干擾Hibernate確定實體是否爲瞬態的能力。
所以問題是:當我無法提供業務密鑰時,是否有更好的選項來編輯,添加和刪除瞬態對象?
這就是爲什麼我說一個解決方案是在它們的最終持久性之前獲取序列值並將其分配給對象。如果Hibernate讓我*,我會繼續。但是,對於使用'@ OrderColumn'的List來說,你可能是正確的選擇。 – mabi