Senhores,
Tenho uma classe “A” que possui um relacionamento 1-n com uma classe “B”, esta classe “B” é a superclasse de “B1” e B2", sendo que “B1” é superclasse da classe “C” que possui “C1” e “C2” como suas subclasses…
A classe “B” possui um objeto da classe “A” (ObjetoA), e a classe “C1” tem o seguinte código:
view plainprint?
C1.setQqCoisaDeA(); //C1 herda todos os atributos e metodos de B por ser sua subclasse...
emf = Persistence.createEntityManagerFactory(nomeUnPersistencia);
em = emf.createEntityManager()
em.persist(C1);
commit();
em.close();
C1.setQqCoisaDeA(); //C1 herda todos os atributos e metodos de B por ser sua subclasse… emf = Persistence.createEntityManagerFactory(nomeUnPersistencia); em = emf.createEntityManager() em.persist(C1); commit(); em.close();
O seguinte erro ocorre:
Exception in thread "AWT-EventQueue-0" javax.persistence.RollbackException: Error while commiting the transaction caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: C1.ObjetoA -> A
at org.hibernate.engine.CascadingAction$9.noCascade(CascadingAction.java:353) at org.hibernate.engine.Cascade.cascade(Cascade.java:139)
at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:131)
at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:122)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:65)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
... 27 more
Exception in thread "AWT-EventQueue-0" javax.persistence.RollbackException: Error while commiting the transaction caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: C1.ObjetoA -> A at org.hibernate.engine.CascadingAction$9.noCascade(CascadingAction.java:353) at org.hibernate.engine.Cascade.cascade(Cascade.java:139) at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:131) at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:122) at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:65) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338) at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54) ... 27 more at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:71)
Alguém poderia ajudar?
Obrigado!