假設我有一個名爲Player的類,它持久化爲hibernate,並且具有生成的ID和複合自然ID。玩家是一個複雜的類,它存儲了也產生了ID的其他對象的層次結構。休眠保存或更新沒有主鍵的對象
我可以查詢json的web服務來獲取Player的實例。 json被Jackson解析,構建一個完整的Player對象,除了它不會生成任何生成的Ids。我基本上想要在這個播放器的實例上執行saveOrUpdate。
一個選項是通過自然ID查詢Player對象的數據庫。如果沒有對象返回,請進行保存。否則,手動將Player對象(及其所有字段)的所有值從Web服務中複製到數據庫中的對象,然後執行更新。我不喜歡這個選項,因爲它看起來效率低下,並且會包含很多額外的代碼。
我更願意做的就是將生成的Ids從數據庫對象複製到Web服務中的對象,然後對其進行更新。不幸的是,我一直無法完成這項工作。我想用合併()會做的伎倆,但我得到這個異常:
org.hibernate.HibernateException:多行與指定的標識符發現
什麼是處理這種情況的最好方法是什麼?
嘗試'了Session.update(OBJE)'insted的合併() – jos