Erro ao tentar Persistir uma entidade.
O prolema é quando eu tento persistir uma entidade, com esta entidade previamente preenchida, o trecho principal do erro é o seguinte:
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
org.hibernate.PersistentObjectException: detached entity passed to persist: br.org.isgh.compras.beans.Recebimento
o código para persistir:
try {
// INICIA A TRANSAÇÃO
em.getTransaction().begin();
//setando os itens no recebimento
recebimento.setRecebimentoItem(recebItens);
//persistindo o recebimento e seus itens
em.persist(recebimento);
em.getTransaction().commit();
em.refresh(recebimento);
} catch (RuntimeException e) {
e.printStackTrace();
if (em.getTransaction().isActive())
em.getTransaction().rollback();
throw e;
} finally {
em.close();
}
Barcelos.java
Curtidas 0
Respostas
Robson Teixeira
24/01/2011
Olá Barcelos
esse erro ocorre muitas vezes por mal uso de cascade tipo você vai inserir no banco 1 obj do tipo Recebimento e você tentou relaciona-lo com outro registro que ja existe no banco e com o cascade o hibernate tentou persistir novamente o registro ja existente.
Solução reveja o uso de cascade na sua classe recebimento.
att
Robson Passarella
esse erro ocorre muitas vezes por mal uso de cascade tipo você vai inserir no banco 1 obj do tipo Recebimento e você tentou relaciona-lo com outro registro que ja existe no banco e com o cascade o hibernate tentou persistir novamente o registro ja existente.
Solução reveja o uso de cascade na sua classe recebimento.
att
Robson Passarella
GOSTEI 0
Davi Costa
24/01/2011
Pelo erro seu objeto está detachad,
o que pode ser feito é recuperá-lo denovo do banco antes de persistir.
Não precisa tb desse
em.refresh(recebimento);
depois do seu commit; Só vai perder performe indo no banco mais uma vez.
E o rollBack vc dá em caso de erro.
Att Davi
o que pode ser feito é recuperá-lo denovo do banco antes de persistir.
Não precisa tb desse
em.refresh(recebimento);
depois do seu commit; Só vai perder performe indo no banco mais uma vez.
E o rollBack vc dá em caso de erro.
Att Davi
GOSTEI 0
Barcelos.java
24/01/2011
era isso mesmo, cara, valeu mesmo... abraço.
GOSTEI 0