今天做一个删除的时候,有如下代码:
for(int i = 0; i < entities.length; i ++) {
DeptDescVO deleteDeptDescVO = entities[i];
if(getDeptDescById(deleteDeptDescVO.getDeptDescId()) != null) {
getHibernateTemplate().delete(deleteDeptDescVO);
}
}
DeptDescVO deleteDeptDescVO = entities[i];
if(getDeptDescById(deleteDeptDescVO.getDeptDescId()) != null) {
getHibernateTemplate().delete(deleteDeptDescVO);
}
}
抛出异常:
org.hibernate.NonUniqueObjectException:
a different object with the same identifier value was already associated with the session
a different object with the same identifier value was already associated with the session
我想是因为调用getDeptDescById的时候已经读出一个DeptDesc了,而删除的时候又是用的另外new的DeptDes,所以会报错,我改了一下代码就可以了。
for(int i = 0; i < ids.length; i ++) {
DeptDescVO deleteDeptDescVO = getDeptDescById((ids[i]));
if(deleteDeptDescVO != null) {
getHibernateTemplate().delete(deleteDeptDescVO);
}
}
DeptDescVO deleteDeptDescVO = getDeptDescById((ids[i]));
if(deleteDeptDescVO != null) {
getHibernateTemplate().delete(deleteDeptDescVO);
}
}