Actually i have an entity(lets call it X) which is extending another entity( and lets name it Y ), so basically when i try to persist X the super class (Y) is persisted as well and Y's ID is set as its ID (cause Im using @PrimaryKeyJoinColumn annotation to set its ID which is the same as Y'ID annotation), now im encountering a situation which i have the Y entity and i just need to persist X using the Y's ID.
when i set Y's ID in X and i try to persist it, the error is (which sounds logical !! ):
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: au.net.netspace.billing.model.AccountPlanServiceFullOptus
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:567)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:192)
at au.net.netspace.persistence.impl.AbstractDAOBean.create(AbstractDAOBean.java:108)
at au.net.netspace.web.business.bean.backing.aconfig.impl.voice.FullVoiceAccountConfigBackingBean.updateAccountPlanServiceFull(FullVoiceAccountConfigBackingBean.java:521)
at au.net.netspace.web.business.bean.backing.aconfig.impl.voice.FullVoiceAccountConfigBackingBeanIntegrationTest.testUpdateAccountPlanServiceFull(FullVoiceAccountConfigBackingBeanIntegrationTest.java:86)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:435)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:356)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:523)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:89)
at org.testng.TestRunner.privateRun(TestRunner.java:622)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:200)
at org.testng.SuiteRunner.run(SuiteRunner.java:126)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:86)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:123)
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: au.net.netspace.billing.model.AccountPlanServiceFullOptus
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:79)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:620)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:594)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:598)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:186)
and when i try to persist X without setting Id , i receive a new ID.
Do you have any idea how i can handle this problem.( im using EJB3 and Hibernate )