I'm trying merge object, which was loaded by query.
(When object is loaded by 'get' or 'load' no exception is thrown)
Hibernate version: 3.0.5
Mapping documents:
Code between sessionFactory.openSession() and session.close():
I'm using Spring HibernateDaoSupport
Code:
Bonus b = (Bonus) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query q=session.createQuery("From Bonus b where b.employee=1 AND b.year=2004");
Bonus b = (Bonus) q.uniqueResult();
return b;
}
});
getHibernateTemplate().merge(b);
Full stack trace of any exception that occurs:
org.hibernate.AssertionFailure: entity was not detached
org.hibernate.event.def.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:201)
org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:102)
org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:54)
org.hibernate.impl.SessionImpl.merge(SessionImpl.java:535)
org.hibernate.impl.SessionImpl.merge(SessionImpl.java:539)
org.springframework.orm.hibernate3.HibernateTemplate$23.doInHibernate(HibernateTemplate.java:665)
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:311)
org.springframework.orm.hibernate3.HibernateTemplate.merge(HibernateTemplate.java:662)
Name and version of the database you are using: Oracle
The generated SQL (show_sql=true):
Hibernate: /* From Bonus b where b.employee=1 AND b.year=2004 */ select bonus0_.rok as rok, bonus0_.employee_id as employee2_, bonus0_.version_bonus as version3_3_, bonus0_.hodnota as hodnota3_ from MBO_BONUS bonus0_ where bonus0_.employee_id=1 and bonus0_.rok=2004
Hibernate: /* load ......model.Employee */ select employee0_.employee_id as employee1_0_, employee0_.version_employee as .... where employee0_.employee_id=?
Hibernate: /* load ....model.Bonus */ select bonus0_.rok as rok0_, bonus0_.employee_id as employee2_0_, bonus0_.version_bonus as version3_3_0_, bonus0_.hodnota as hodnota3_0_ from MBO_BONUS bonus0_ where bonus0_.rok=? and bonus0_.employee_id=?
ERROR [org.hibernate.AssertionFailure] - an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session)
org.hibernate.AssertionFailure: entity was not detached