天天看點

a different object with the same identifier value was already associated with the session錯誤

正常情況一般調用hiberate端方法進行資料庫操作時,是直接調用 getHibernateTemplate().update(user);,但在hibernate中同一個session裡面有了兩個相同辨別但是是 不同實體時就會出現如标題的錯誤,在網上找來如下解決方法,錯誤是解決了,但不完美:

public void update(User user) {

Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();

session.clear();

session.update(user);

}

這 樣在session.update(user)後如果還有其他對資料庫的save或update并且是在同一個事務中,後面的操作可能就會無效,具體原因 沒查出來,可能是getcurrentSession()擷取的是“目前”session,調用getcurrentSession()時“目前 ”session被從hibernate中剝離,是以導緻了後面的操作無效。

如果是struts+hibernate+spring架構下面有個很簡單的方法:直接調用getHibernateTemplate().merge(user)。