2011-10-27 169 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实施以满足您的需求。