這個(gè)錯(cuò)誤我一共遇到過(guò)兩次,一直沒(méi)有找到很好的解決方案,這個(gè)錯(cuò)誤產(chǎn)生原因相信大家都知道,因?yàn)樵趆ibernate中同一個(gè)session里面有了兩個(gè)相同標(biāo)識(shí)但是是不同實(shí)體.
一開(kāi)始按網(wǎng)上說(shuō)的用session.merge(Object)報(bào)了一個(gè)錯(cuò),可能是沒(méi)有用好,改用 session.clear(); session.update(user);這樣就OK了,
方法為:
package org.springframework.orm.hibernate3.support;
...
public void modifyByMerge(User user) {
Session session = getHibernateTemplate().getSessionFactory().
getCurrentSession();
session.clear();
session.update(user);
}
...
項(xiàng)目用的是spring + hibernate所以得用getHibernateTemplate().getSessionFactory().getCurrentSession();得當(dāng)前Session