Exception in thread "main" javax.persistence.RollbackException: Error while commiting the transaction
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:71)
at example.DAO.RubricaReceitaDAO.altera(RubricaReceitaDAO.java:52)
at example.tests.MainTest.main(MainTest.java:40)
Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: example.entities.RubricaReceita.fonte -> example.entities.Fontes
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)
... 2 more
Java Result: 1
[code]public static void altera(RubricaReceita rr, RubricaReceita rr_altera){
EntityManagerFactory emf = Persistence.createEntityManagerFactory(“SIFIUNPU”);
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
RubricaReceita rr_local = em.find(RubricaReceita.class, rr.getNum());
if(rr_altera.getNome().length() != 0)
rr_local.setNome(rr_altera.getNome());
if(rr_altera.getTipo().length() != 0)
rr_local.setTipo(rr_altera.getTipo());
if(!rr_altera.getFonte().equals(rr.getFonte()))
rr_local.setFonte(rr_altera.getFonte());
em.getTransaction().commit(); // Linha 52
em.close();
emf.close();
}
[/code]
O que acham?