Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 错误消息:org.hibernate.unUniqueObjectException:具有相同标识符值的不同对象已与会话关联_Spring_Hibernate_Rest - Fatal编程技术网

Spring 错误消息:org.hibernate.unUniqueObjectException:具有相同标识符值的不同对象已与会话关联

Spring 错误消息:org.hibernate.unUniqueObjectException:具有相同标识符值的不同对象已与会话关联,spring,hibernate,rest,Spring,Hibernate,Rest,以上是我在DaOImpl中调用方法的方式 try { final CHEMRFacilityMedicalEquipment medicalequ = m_chemrFacilityMedicalEquipmentManagementBO .findCHEMRFacilityMedicalEquipmentById(id); final CHEMRFacilityMedicalEquipment updateMed = new CH

以上是我在DaOImpl中调用方法的方式

try {
        final CHEMRFacilityMedicalEquipment medicalequ = m_chemrFacilityMedicalEquipmentManagementBO
                .findCHEMRFacilityMedicalEquipmentById(id);
        final CHEMRFacilityMedicalEquipment updateMed = new CHEMRFacilityMedicalEquipment();
        if (medicalequ.getMetaStatus() == true) {
            updateMed.setId(medicalequ.getId());
            updateMed.setMetaStatus(false);
            m_chemrFacilityMedicalEquipmentManagementBO
                    .updateCHEMRFacilityMedicalEquipment(updateMed);
            return true;
        }
        return false;
    }
道沉淀

我正在尝试更新我的对象,并通过更新方法发送它以更新表中的数据。
当我调用update方法时,它返回“具有相同标识符值的不同对象已与会话关联”,无法准确了解问题所在。

可能是您的会话当前正在处理具有相同标识符(其ID)的两个不同对象。例如

然后假设调用了该语句

CHEMRFacilityMedicalEquipment updateMed = new CHEMRFacilityMedicalEquipment();
updateMed.setId(1);
student.setName("Mukesh");

updateMed = new CHEMRFacilityMedicalEquipment();
updateMed.setId(1);
student.setName("Ryan");
虽然该实例的会话尚未关闭(提交),但该实例仍处于持久状态,但您的会话试图通过另一个实例管理另一个具有相同标识符(id)的不同实例:

m_sessionFactory.getCurrentSession().save(updateMed );
另外,我觉得下面这两行很可疑

m_sessionFactory.getCurrentSession().save(updateMed );

m_sessionFactory.getCurrentSession().close();

如果您的会话当前正在使用相同的标识符(本例中为id)处理这些实例,则可能是。我认为您可以自己解决,因为目前无法从代码中提取太多信息。

请提供完整的堆栈跟踪。您试图更新
updateMed.setId
,这看起来也很可疑。你不应该这样做。
m_sessionFactory.getCurrentSession().save(updateMed );

m_sessionFactory.getCurrentSession().close();
 final CHEMRFacilityMedicalEquipment medicalequ = m_chemrFacilityMedicalEquipmentManagementBO
                .findCHEMRFacilityMedicalEquipmentById(id);
 final CHEMRFacilityMedicalEquipment updateMed = new CHEMRFacilityMedicalEquipment();