RollbackException

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?

A gente não acha nada. O próprio JPA já te falou o erro, tem nem como discutir com ele. =/[quote]Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: example.entities.RubricaReceita.fonte -> example.entities.Fontes [/quote]

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

Isso te ajuda ?

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