0
我有一個有幾列的表。主鍵是id
,自動生成。休眠:如果還沒有在表中保存
考慮以下代碼,它可以執行不止一次:
session.save(x);
對象x
具有相同的內容,說如果我們不作任何修改運行程序的兩倍。結果,該對象在表格中出現兩次,其中有不同的id
s。
如何修改此代碼以避免重複插入?
我認爲使用session.get
,但這需要知識id
。
我還考慮設置x
以外的其他所有字段的標準,但這是要求麻煩:有一天我會添加另一列,並忘記將其添加到條件。有沒有一個很好的解決方案?
生成的id是什麼?表中可能已經或可能沒有'x'。你可以分解它:如果第一次插入「x」,那麼'id'會是什麼?第二次? – user443854 2013-02-20 22:56:45
hibernate中的合併方法定義如下: 「將給定對象的狀態複製到具有相同標識符的持久對象上,如果當前沒有與會話相關聯的持久實例,則它將被加載,如果給定實例未保存,保存副本並將其作爲新的持久實例返回。「 – 2013-02-21 01:22:27
謝謝,您評論中的解釋非常清楚。但是我仍然在猜測「顯然你必須保持它,你很可能仍然需要提出重複規則」。你能解釋一下你的意思嗎?更好的是,更新答案。 – user443854 2013-02-21 13:39:08