1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Exception na exclusão - Removing a detached instance como resolver?

Olá pessoal,

ERRO:Erro ao tentar remover o fabricante: Removing a detached instance com.rino_erp.entidades.Fabricante#2

Não consigo excluir o objeto, porem consigo pegar da tela de pesquisa e enviá-lo para outra pagina usando o normalmente e preenchendo os campos na tela de cadastro. creio que o erro esta no método excluir no FabricanteDAO por estar usando o "remover", vi um exemplo na internet e a unica diferença é que ele usa "Session" do HibernateUtil assim dando a opção de usar o método DELETE(), algo que usando o entityManegerFactory nao permite pelo que vi. Bom, não sei se esta logica e coerente mas peso que me ajudem nessa luta".

Erro completo:

java.lang.IllegalArgumentException: Removing a detached instance com.rino_erp.entidades.Fabricante#2
    at org.hibernate.ejb.event.EJB3DeleteEventListener.performDetachedEntityDeletionCheck(EJB3DeleteEventListener.java:45)
    at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:86)
    at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:52)
    at org.hibernate.impl.SessionImpl.fireDelete(SessionImpl.java:766)
    at org.hibernate.impl.SessionImpl.delete(SessionImpl.java:744)
    at org.hibernate.ejb.AbstractEntityManagerImpl.remove(AbstractEntityManagerImpl.java:246)
    at com.rino_erp.dao.FabricanteDAO.excluir(FabricanteDAO.java:69)
    at com.rino_erp.bean.FabricanteBean.excluir(FabricanteBean.java:72)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
    at javax.faces.event.MethodExpressionActionListener.processAction(Unknown Source)
    at javax.faces.event.ActionEvent.processListener(Unknown Source)
    at javax.faces.component.UIComponentBase.broadcast(Unknown Source)
    at javax.faces.component.UICommand.broadcast(Unknown Source)
    at javax.faces.component.UIViewRoot.broadcastEvents(Unknown Source)
    at javax.faces.component.UIViewRoot.processApplication(Unknown Source)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(Unknown Source)
    at com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(Unknown Source)
    at javax.faces.webapp.FacesServlet.service(Unknown Source)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2503)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2492)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

No FacesUtil o método é;

public static String getParam(String nome){

        FacesContext facesContext = FacesContext.getCurrentInstance();

        ExternalContext externalContext =  facesContext.getExternalContext();

        Map<String, String> paramentros= externalContext.getRequestParameterMap();

    String valor = paramentros.get(nome);

    return valor;

    }

No FabricanteBean;

public void excluir(){
    try{
        FabricanteDAO f = new FabricanteDAO();
    //    System.out.println(fabricanteCadastro); Teste objeto imprime normalmente
        f.excluir(fabricanteCadastro);

        FacesUtil.adicionarMsgInfo("Fabricante removido com sucesso.");
    }catch(RuntimeException ex){

        FacesUtil.adicionarMsgErro("Erro ao tantar remover o fabricante:" + ex.getMessage());
    ex.printStackTrace();
    }

    }
    public void excluir(Fabricante fabricante) {

        try {
            em.getTransaction().begin();
            em.remove(fabricante);
            em.getTransaction().commit();
        } catch (RuntimeException ex) {
            if (em != null) {
                em.getTransaction().rollback();
            }
            throw ex;
        } finally {
            emf.close();
        }
    }
``
<p:commandButton value="Excluir" actionListener="#fabricanteBean.excluir}" update=":msgGlobal" />
public void carregarCadastro(){
    try{

        String valor = FacesUtil.getParam("fabcod");
        if(valor != null){
            Long codigo = Long.parseLong(valor);

            FabricanteDAO fabricanteDao = new FabricanteDAO();


            fabricanteCadastro=fabricanteDao.buscarPorCodigo(codigo);

        }
    }catch(RuntimeException ex){
    FacesUtil.adicionarMsgErro("Erro ao tentar obter os dados do fabricantes:" 
    + ex.getMessage());

    }
}
}

Desde já agradeço.

  • Vi alguns exemplos afirmando que nesta situação o meu objeto ficou fora do contexto, como e onde devo colocá-lo no contexto, se isso é possível, ou tenho que encontrar outra forma?

    Everton A.   15 de set de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java hibernate primefaces mysql jpa entity-framework delete jsf ou faça a sua própria pergunta.