java.lang.IllegalArgumentException: attempt to create delete event with null entity

0

I have a simple Model class from Manufacturer with only the 'description' attribute. My database is populated and the save and edit method is working normally. But when I go away it generates the following error on the console:

java.lang.IllegalArgumentException: attempt to create delete event with null entity
at org.hibernate.event.spi.DeleteEvent.<init>(DeleteEvent.java:48)
at org.hibernate.internal.SessionImpl.delete(SessionImpl.java:896)
at br.com.drogaria.dao.GenericDAO.excluir(GenericDAO.java:48)
at br.com.drogaria.bean.FabricanteBean.excluir(FabricanteBean.java:62)

GenericDAO

public void excluir(Entidade entidade) {
    Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
    Transaction transacao = null;

    try {
        transacao = sessao.beginTransaction();
        sessao.delete(entidade);
        transacao.commit();
    } catch (RuntimeException erro) {
        if (transacao != null) {
            transacao.rollback();
        }
        throw erro;
    } finally {
        sessao.close();
    }
}

Bean class, but business logic will eventually put in a Service class:

public void excluir(ActionEvent evento) {
    try {
        this.fabricante = (Fabricante) evento.getComponent().getAttributes().get("fabricanteSelecionado");

        FabricanteDAO fabricanteDAO = new FabricanteDAO();
        //this.fabricante = fabricanteDAO.buscar(fabricante.getCodigo());

        fabricanteDAO.excluir(fabricante);
        this.fabricantes = fabricanteDAO.listar();

        Messages.addGlobalInfo("Fabricante excluído com sucesso!");
    } catch (RuntimeException erro) {
        Messages.addGlobalError("Ocorreu um erro ao tentar excluir um Fabricante.");
        erro.printStackTrace();
    }

xhtml

<p:commandButton icon="ui-icon-trash" actionListener="#{fabricanteBean.excluir}"
            update=":mensagem :formListagem:tabela" title="Excluir">
    <p:confirm header="Confirmação" message="Deseja excluir o Fabricante?"
        icon="ui-icon-alert">
        <f:attribute name="fabricanteSelecionado" value="#{fabricante}" />
    </p:confirm>

    
asked by anonymous 24.10.2017 / 13:11

1 answer

0

Actually the classes are correct, then checking in calmly I realized that the error was in the xhtml in the confirmDialog, I put the f: attribute inside the p: confirm, wrong: And the correct one is as below.

<p:commandButton icon="ui-icon-trash" actionListener="#{fabricanteBean.excluir}"
        update=":mensagem :formListagem:tabela" title="Excluir">
    <p:confirm header="Confirmação" message="Deseja excluir o Fabricante #{fabricante.descricao}?" 
            icon="ui-icon-alert" />
        <f:attribute name="fabricanteSelecionado" value="#{fabricante}" />
</p:commandButton>
    
02.11.2017 / 20:26