11
respostas

erro ao buscar um produto...

Boa tarde estou preso no erro faz tempinho já, e não consigo sair dele :( Quando tenho uma anotação OneToOne na minha classe eu consigo adicionar e remover e alterar o desejado, mais quando tenho uma anotação OneToMany quando tento entrar na minha pagina html e dentro dessa pagina tenho a minha tabela o erro ocorre. Pagina html.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

<ui:composition template="/template/_template.xhtml">
    <ui:define name="conteudo">
        <p:growl id="mensagem" showDetail="true" sticky="true" />
        <h:form id="formularioProduto">
            <p:dataTable value="#{produtoBean.lstProdutos}" var="produto"
                emptyMessage="Nenhum PRODUTO encontrado" paginator="true" rows="10">

                <f:facet name="header">Produtos</f:facet>
                <f:facet name="footer">
                    <p:commandButton value="Novo" icon="fa fa-fw fa-plus"
                        action="#{produtoBean.formulario}" />
                </f:facet>

                <p:column headerText="Descrição">
                    <h:outputText value="#{produto.descricao}" />
                </p:column>

                <p:column headerText="Preço">
                    <h:outputText value="#{produto.preco}" />
                </p:column>

                <p:column headerText="Quantidade">
                    <h:outputText value="#{produto.quantidade}" />
                </p:column>

                <p:column headerText="Fornecedor">
                    <ui:repeat value="#{produto.fornecedores}" var="fornecedor">
                        <h:outputText value="#{fornecedor.nome}" />
                    </ui:repeat>
                </p:column>

                <p:column headerText="Celular">
                    <ui:repeat value="#{produto.fornecedores}" var="fornecedor">
                        <h:outputText value="#{fornecedor.celular}" />
                    </ui:repeat>
                </p:column>

                <p:column headerText="Opções">
                    <p:panelGrid columns="2">
                        <p:commandButton icon="fa fa-fw fa-edit"
                            action="#{produtoBean.carregar(produto)}" title="Editar" />
                        <p:commandButton icon="fa fa-fw-remove" title="Excluir"
                            value="#{produtoBean.remover(produto)}"
                            update=":mensagem formularioProduto" />
                    </p:panelGrid>
                </p:column>



            </p:dataTable>
        </h:form>
    </ui:define>
</ui:composition>

</html>

Agora a minha classe modelo. Produto

@Table
@Entity
@NamedQueries({ @NamedQuery(name = "Produto.listaTodos", query = "Select p from Produto p join fetch p.fornecedores") })
public class Produto implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column
    private Long codigo;

    @Column(length = 40, nullable = false)
    private String descricao;

    @Column
    private Integer quantidade;

    @Column
    private Double preco;

    @OneToMany(mappedBy = "produto")
    private List<Fornecedor> fornecedores = new ArrayList<Fornecedor>();

Fornecedor

@Table
@Entity
public class Fornecedor implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column
    private Long codigo;

    @Column(length = 50, nullable = false)
    private String nome;

    @Column
    private String celular;

    @ManyToOne
    private Produto produto = new Produto();

Agora o meu bean de excluir.

public void remover(Produto produto) {
        new ProdutoDao().remover(produto, fornecedor);
        new MensagemUtil().mensagemInfo("Produto EXCLUIDO com SUCESSO");
    }

Agora o dao.

public void remover(Produto produto, Fornecedor fornecedor) {
        EntityManager em = new JPAUtil().geEntityManager();
        em.getTransaction().begin();
        em.remove(em.merge(produto));
        em.remove(em.merge(fornecedor));
        em.getTransaction().commit();
        em.close();
    }

Como reparado a minha tabela tem uns campo obrigatório como nome, e tals. Quando vo la e clico em salvar salva sem erro nenhum, porem quando clico no botao pequisar para ir pra minha pagina de tabela parece que ele está meio que tentando salvar algum campo em branco no meu banco de dados, porque o erro que aparece é esse.

dez 16, 2016 5:16:27 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/tcc] threw exception [org.hibernate.exception.ConstraintViolationException: Column 'nome' cannot be null] with root cause
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'nome' cannot be null
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1040)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
    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.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
    at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
    at com.sun.proxy.$Proxy32.executeUpdate(Unknown Source)
    at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:96)
    at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:58)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2936)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3447)
    at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)
    at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)
    at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:203)
    at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:183)
    at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:167)
    at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:320)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:287)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:193)
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:126)
    at org.hibernate.ejb.event.EJB3MergeEventListener.saveWithGeneratedId(EJB3MergeEventListener.java:71)
    at org.hibernate.event.internal.DefaultMergeEventListener.saveTransientEntity(DefaultMergeEventListener.java:236)
    at org.hibernate.event.internal.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:216)
    at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:154)
    at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:76)
    at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:903)
    at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:887)
    at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:891)
    at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:879)
    at br.com.bercalini.dao.ProdutoDao.remover(ProdutoDao.java:42)
    at br.com.bercalini.bean.ProdutoBean.remover(ProdutoBean.java:49)
    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 javax.el.BeanELResolver.invoke(BeanELResolver.java:476)
    at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:161)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:173)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
    at javax.faces.component.UICommand.getValue(UICommand.java:218)
    at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeMarkup(CommandButtonRenderer.java:63)
    at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeEnd(CommandButtonRenderer.java:54)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at org.primefaces.component.panelgrid.PanelGridRenderer.encodeDynamicBody(PanelGridRenderer.java:131)
    at org.primefaces.component.panelgrid.PanelGridRenderer.encodeTableBody(PanelGridRenderer.java:102)
    at org.primefaces.component.panelgrid.PanelGridRenderer.encodeTableLayout(PanelGridRenderer.java:65)
    at org.primefaces.component.panelgrid.PanelGridRenderer.encodeEnd(PanelGridRenderer.java:37)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at org.primefaces.component.column.Column.renderChildren(Column.java:352)
    at org.primefaces.component.datatable.DataTableRenderer.encodeCell(DataTableRenderer.java:1051)
    at org.primefaces.component.datatable.DataTableRenderer.encodeRow(DataTableRenderer.java:999)
    at org.primefaces.component.datatable.DataTableRenderer.encodeRows(DataTableRenderer.java:907)
    at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:854)
    at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:814)
    at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:290)
    at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:252)
    at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:87)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890)
    at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:85)
    at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:72)
    at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:49)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Falando que o campo nome nao pode ser null, mas nem to clicando em salvar e sim em pesquisar, me ajudeem :(

11 respostas

Essa parte aqui da exception:

at br.com.bercalini.dao.ProdutoDao.remover(ProdutoDao.java:42)
    at br.com.bercalini.bean.ProdutoBean.remover(ProdutoBean.java:49)

indica que vc ta chamando o remover.. no remover vc tenta fazer um merge, só que algum dos objetos ali não está completo, o que deve estar causando a falha de integridade. Por sinal, em vez de usar o merge, usa entityManager.getReference(produto.getId()), o mesmo vale para o outro merge. Você só precisa deixar o objeto no estado gerenciado.

Alberto então é só trocar essa linha? fazer uma referencia do produto e fornecedor? que erro estranho ;( faz tempo que to preso nele.

Alberto acrescentei o metodo busca para retornar o objeto mas mesmo assim da erro.

    public Produto buscarPorId(Produto produto) {
        EntityManager em = new  JPAUtil().geEntityManager();
        Produto busca = em.find(Produto.class, produto);
        em.close();
        return busca;
    }

    public void remover(Produto produto, Fornecedor fornecedor) {
        EntityManager em = new JPAUtil().geEntityManager();
        em.getTransaction().begin();
        buscarPorId(produto);
        em.getReference(Produto.class, produto.getCodigo());
        em.getReference(Fornecedor.class, fornecedor.getCodigo());
        em.getTransaction().commit();
        em.close();
    }
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/tcc] threw exception [Provided id of the wrong type for class br.com.bercalini.modelo.Produto. Expected: class java.lang.Long, got class br.com.bercalini.modelo.Produto] with root cause
org.hibernate.TypeMismatchException: Provided id of the wrong type for class br.com.bercalini.modelo.Produto. Expected: class java.lang.Long, got class br.com.bercalini.modelo.Produto
    at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:132)
    at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1078)
    at org.hibernate.internal.SessionImpl.access$2000(SessionImpl.java:175)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2424)
    at org.hibernate.internal.SessionImpl.get(SessionImpl.java:974)
    at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:807)
    at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:781)
    at br.com.bercalini.dao.ProdutoDao.buscarPorId(ProdutoDao.java:40)
    at br.com.bercalini.dao.ProdutoDao.remover(ProdutoDao.java:48)
    at br.com.bercalini.bean.ProdutoBean.remover(ProdutoBean.java:49)
    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 javax.el.BeanELResolver.invoke(BeanELResolver.java:476)
    at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:161)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:173)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
    at javax.faces.component.UICommand.getValue(UICommand.java:218)
    at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeMarkup(CommandButtonRenderer.java:63)
    at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeEnd(CommandButtonRenderer.java:54)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at org.primefaces.component.panelgrid.PanelGridRenderer.encodeDynamicBody(PanelGridRenderer.java:131)
    at org.primefaces.component.panelgrid.PanelGridRenderer.encodeTableBody(PanelGridRenderer.java:102)
    at org.primefaces.component.panelgrid.PanelGridRenderer.encodeTableLayout(PanelGridRenderer.java:65)
    at org.primefaces.component.panelgrid.PanelGridRenderer.encodeEnd(PanelGridRenderer.java:37)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at org.primefaces.component.column.Column.renderChildren(Column.java:352)
    at org.primefaces.component.datatable.DataTableRenderer.encodeCell(DataTableRenderer.java:1051)
    at org.primefaces.component.datatable.DataTableRenderer.encodeRow(DataTableRenderer.java:999)
    at org.primefaces.component.datatable.DataTableRenderer.encodeRows(DataTableRenderer.java:907)
    at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:854)
    at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:814)
    at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:290)
    at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:252)
    at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:87)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890)
    at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:85)
    at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:72)
    at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:49)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Desde ja obrigado pela sua ajuda

Me ajudem kk to preso aqui ainda :(

Opa, a exception ta explicando... Vc tentou carregar o produto passando um outro produto em vez do long. Tem sempre que ler a exception, eh um dos diferenciais dos projetos em Java.

E eu não entendi, vc tem um método remover que não remove nada.

Então teria que passar o id do produto? e não um produto? Falto o metodo merge do meu entity não é? é que eu vi o seu comentario e achei que era para substituir o merge pelo entityManager.getReference(produto.getId()). Irei traduzir todas as minhas excpetions a partir de agora para ver se eu entendo kk

Alberto mais uma vez desculpa o encomo :( agora ta dando uma exception de carregar o meu id, mas eu ja to passando o metodo find para cerregar...

GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/tcc] threw exception [id to load is required for loading] with root cause
java.lang.IllegalArgumentException: id to load is required for loading
    at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:87)
    at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:59)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.getReference(SessionImpl.java:2398)
    at org.hibernate.internal.SessionImpl.load(SessionImpl.java:966)
    at org.hibernate.ejb.AbstractEntityManagerImpl.getReference(AbstractEntityManagerImpl.java:763)
    at br.com.bercalini.dao.ProdutoDao.remover(ProdutoDao.java:49)
    at br.com.bercalini.bean.ProdutoBean.remover(ProdutoBean.java:50)
    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 javax.el.BeanELResolver.invoke(BeanELResolver.java:476)
    at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:161)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:173)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
    at javax.faces.component.UICommand.getValue(UICommand.java:218)
    at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeMarkup(CommandButtonRenderer.java:63)
    at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeEnd(CommandButtonRenderer.java:54)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at org.primefaces.component.panelgrid.PanelGridRenderer.encodeDynamicBody(PanelGridRenderer.java:131)
    at org.primefaces.component.panelgrid.PanelGridRenderer.encodeTableBody(PanelGridRenderer.java:102)
    at org.primefaces.component.panelgrid.PanelGridRenderer.encodeTableLayout(PanelGridRenderer.java:65)
    at org.primefaces.component.panelgrid.PanelGridRenderer.encodeEnd(PanelGridRenderer.java:37)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at org.primefaces.component.column.Column.renderChildren(Column.java:352)
    at org.primefaces.component.datatable.DataTableRenderer.encodeCell(DataTableRenderer.java:1051)
    at org.primefaces.component.datatable.DataTableRenderer.encodeRow(DataTableRenderer.java:999)
    at org.primefaces.component.datatable.DataTableRenderer.encodeRows(DataTableRenderer.java:907)
    at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:854)
    at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:814)
    at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:290)
    at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:252)
    at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:87)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890)
    at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:85)
    at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:72)
    at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:49)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    public Produto buscarPorId(Produto produto) {
        EntityManager em = new  JPAUtil().geEntityManager();
        Produto busca = em.find(Produto.class, produto.getCodigo());
        em.close();
        return busca;
    }

    public void remover(Produto produto, Fornecedor fornecedor) {
        EntityManager em = new JPAUtil().geEntityManager();
        em.getTransaction().begin();
        em.merge(em.getReference(Produto.class, produto.getCodigo()));
        em.merge(em.getReference(Fornecedor.class, fornecedor.getCodigo()));
        em.getTransaction().commit();
        em.close();
    }


public void remover(Produto produto) {
        new ProdutoDao().buscarPorId(produto);
        new ProdutoDao().remover(produto, fornecedor);
        new MensagemUtil().mensagemInfo("Produto EXCLUIDO com SUCESSO");
    }

:(

Opa, o id tá nulo.

Sim sim o erro esta ai mesmo, porem o problema é quando eu eu mudo a tela do sistema para mostrar a tela da tabela, e nem da chance de eu clicar no botão remover pra sair do nulo :(

Oi Alisson, se vc já sabe onde ta o problema, é quebrar a cabeça para tentar corrigir..

Esse código aqui:

public void remover(Produto produto, Fornecedor fornecedor) {
        EntityManager em = new JPAUtil().geEntityManager();
        em.getTransaction().begin();
        em.merge(em.getReference(Produto.class, produto.getCodigo()));
        em.merge(em.getReference(Fornecedor.class, fornecedor.getCodigo()));
        em.getTransaction().commit();
        em.close();
    }


public void remover(Produto produto) {
        new ProdutoDao().buscarPorId(produto);
        new ProdutoDao().remover(produto, fornecedor);
        new MensagemUtil().mensagemInfo("Produto EXCLUIDO com SUCESSO");
    }

Deveria ser assim:

public void remover(Produto produto, Fornecedor fornecedor) {
        EntityManager em = new JPAUtil().geEntityManager();
        em.getTransaction().begin();
        //nao precisa do fornecedor
    Produto produto = em.getReference(Produto.class, produto.getCodigo());
        em.getTransaction().commit();
        em.close();
    }

//esse aqui eu nem vejo motivo para existir
public void remover(Produto produto) {
        Produto produto = new ProdutoDao().buscarPorId(produto);
        new ProdutoDao().remover(produto, fornecedor);
        new MensagemUtil().mensagemInfo("Produto EXCLUIDO com SUCESSO");
    }

Alberto o outro metedo remover é da classe bean.