different object with the same identifier value was already associated

Asked on May 19, 2013
Hi Friends,
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session:
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:191)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:144)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:705)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:693)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:689)
Any clue for below error.

Replied on May 19, 2013
Can you explain what are doing.

Replied on May 19, 2013
I am running InheritanceType.TABLE_PER_CLASS and saving data like
Session session=getSession();
session.beginTransaction();
Employee e=new Employee(1,"james",25);
session.save(e);
Manager m=new Manager(1,"james",25,"SC","ABC");
session.save(m);
session.beginTransaction();
session.getTransaction().commit();
Session session=getSession();
session.beginTransaction();
Employee e=new Employee(1,"james",25);
session.save(e);
Manager m=new Manager(1,"james",25,"SC","ABC");
session.save(m);
session.beginTransaction();
session.getTransaction().commit();

Replied on May 19, 2013
You need to use as
session.flush();
session.clear();
your code should look like
Session session=getSession();
session.beginTransaction();
Employee e=new Employee(1,"james",25);
session.save(e);
Manager m=new Manager(1,"james",25,"SC","ABC");
session.flush();
session.clear();
session.save(m);
session.beginTransaction();
session.getTransaction().commit();