2011-10-27 336 views
0

我正面臨着Hibernate的一些問題。我們需要與子女保存一個對象。每個孩子都有一個複合主鍵。該鍵的一個屬性將被觸發器插入。在致電saveOrUpdate(Object)之前,將從該計劃中設置另一個屬性。複合主鍵休眠問題

但是我們無法保存對象。 Hibernate拋出異常Same identifier is already exists in the session

我試過session.clear(),但我得到了同樣的例外。當我嘗試session.merge()時,只有最後一個孩子得救,其他人被忽略。

+0

你能發佈你試圖保存的對象的hbm文件或java嗎? – ManuPK

回答

1

如果你不打算需要在同一個Hibernate Session救過的對象,你可以用Session.evict()保存後立即脫離他們:

// children is the collection of detached children, ready to save 
for (Child child : children){ 
    session.save(child); 
    session.evict(child); 
} 

另外,在Hibernate論壇此項可能會有所幫助:Before Insert Trigger and ID generator。您可以整合一個AbstractPostInsertGenerator實施以滿足您的需求。