复合主键的hibernate问题

时间:2011-10-27 12:02:58

标签: java hibernate

我正面临着Hibernate的一些问题。我们需要用它的子节点保存一个对象。每个孩子都有一个复合主键。密钥的一个属性将由触发器插入。在调用saveOrUpdate(Object)之前,将从程序中设置另一个属性。

但是我们无法保存对象。 Hibernate抛出异常Same identifier is already exists in the session

我尝试了session.clear(),但我得到了同样的例外。当我尝试session.merge()时,只保存了最后一个孩子,其他孩子被忽略了。

1 个答案:

答案 0 :(得分: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的实现,您可以集成以满足您的需求。