1
我需要使hibernate只保存未執行的對象。如果這個對象已經存在,那麼hibernate必須不做任何事情,或者對持久對象的id進行標記。源代碼equals()和hashCode()方法是owerriden並且工作正常。 我可以通過配置或類似pre插入監聽器的方式做到這一點嗎? 例如:休眠。僅保存未執行的對象
session.beginTransaction();
ElementToPersist element = new ElementToPersist();
element.setName("Element");
element.setValue("Value");
session.save(element);
session.getTransaction().commit();
session.beginTransaction();
ElementToPersist element2 = new ElementToPersist();
element2.setName("Element");
element2.setValue("Value");
session.save(element2);
session.getTransaction().commit();
在我的情況下,這兩個元素將與不同的ID的持久化。我怎樣才能讓hibernate在插入前檢查這個元素的存在?你能展示最好的實踐嗎? 謝謝。
不幸的是,由於架構異常,我無法添加約束條件。如果另一個對象與此元素具有多對一關聯,並且它必須被持久化,我該怎麼辦? – 2012-01-31 12:46:56
那麼,根據具體情況,使用已存在於數據庫中的元素或剛剛保存的元素初始化ManyToOne關聯。 – 2012-01-31 12:52:10
所以,你的意思是我必須執行查詢,如「session.createQuery(」從ElementTOPersist作爲o哪裏o =?「)」然後手動保存這個對象? – 2012-01-31 12:52:35