有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

复合主键的java hibernate问题

我在使用Hibernate时遇到了一些问题。我们需要保存一个对象及其子对象。每个子级都有一个复合主键。触发器将插入密钥的一个属性。在调用saveOrUpdate(Object)之前,将从程序中设置另一个属性

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

我尝试过session.clear(),但得到了相同的异常。当我尝试session.merge()时,只有最后一个孩子得救了,其他孩子被忽略了


共 (1) 个答案

  1. # 1 楼答案

    如果在同一个Hibernate会话中不需要保存对象,可以在保存后立即使用^{}分离它们:

    // 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。有一个^{}的实现,你可以集成它来满足你的需求