今天遇到一个Hibernate报错【A different object with the same identifier value was already associated with the session】,百度翻译【具有相同标识符值的另一个对象已与会话关联】
我是在执行hibernateTemplate.saveOrUpdate(obj)的时候报的错。
hibernate有三种状态:临时态、持久态、游离态。持久态保存在会话里,因此我认为错误原因应该是saveOrUpdate的之前执行过相同主键的对象操作,致使session中已含有相同主键的对象。那解决方案就有两个方案:
①使用已经持久态的对象进行saveOrUpdate
②将相同主键持久化对象转化为游离态或直接从session中删除