错误信息:
org.springframework.orm.hibernate3.HibernateSystemException: Illegal attempt to associate a collection with two open sessions;
网上 说 两个不同的hibernate session都同时引用了同一个collection对象,merge应该根据ID先从数据库里面查询 这条数据 然后更新相应字段,如果是saveOrupdate 直接就保存或者更新了 。 假设有对象person其属性如下: person(1, "zhangsan", "123"); 当 merge(person); 时,表示它会先从数据库中查询出id和person id值一致的持久化对象 select ... where id = 1 如得到的对象为person2且其属性如下: person2(1, "lisi", "567"); 那么如果它们属性不一样,将person的属性赋给person2 person2(1, "zhangsan","123") 再 return person2
将原来的代码: saveOrUpdate(person); 改为 merge(person);