RollbackException

3 respostas
B
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
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();  
    }

O que acham?

3 Respostas

Hebert_Coelho

A gente não acha nada. O próprio JPA já te falou o erro, tem nem como discutir com ele. =/

Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: example.entities.RubricaReceita.fonte -> example.entities.Fontes

Tem algum cara no relacionamento que você não salvou o não está attached ao persistence context. [=

Rodrigo_Sasaki

Isso te ajuda ?

B

Você tem razão, ops, ele. Tinha esquecido de verificar se a fonte onde eu estava tentando adicionar a rubrica existia, e adivinhe só?

Obrigado

Criado 19 de junho de 2012
Ultima resposta 19 de jun. de 2012
Respostas 3
Participantes 3