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