代码改变世界

a different object with the same identifier value was already associated with

2011-04-21 14:11  卫佳  阅读(412)  评论(0编辑  收藏  举报

最近在工作中遇到这样一个异常,异常的原因很容易找到,就是看怎么去解决这个异常了。自己尝试用了网上搜索到的好多方法都不能解决。最后自己找到了两种解决方案:cleaning cloth

我用的是hibernate3.0。
方案一:在写完要一个完整的操作之后,比如,delete操作,调用this.getHibernateTemplate().evict(object),这样就可以把多余的对象给清除掉了。然后再执行需要的操作,如saveOrUpdate。

方案二:同样是在一个完整的操作之后,比如,delete操作,然后同时调用
this.getHibernateTemplate().flush();this.getHibernateTemplate().clear(); 来强迫执行,然后再执行需要的操作,如saveOrUpdate。(注意,这种方法要同时执行这两个方法,单独执行一个都无法达到预期目的)。toothpaste


网上搜到的用clear()方法,merge()方法,或者refresh()方法,在我这里尝试了一下都不行。
这是自己在工作中发现并解决的问题,希望大家多给点指点。