Bom pessoa estou com um problema, não condigo fazer funcionar meu método para exclusão de um objeto, me parece que minha view nem ao menos enxerga o método.
Minha classe Dao
package br.com.drem.daos;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import br.com.drem.conexao.*;
import br.com.drem.tabelas.Produtos;
public class ProdutoDao {
private org.hibernate.Session sessao;
private org.hibernate.Transaction transacao;
public void salvar(Produtos produtos) {
try {
/* abro uma nova sessão */
this.sessao = HibernateUtil.getSessionFactory().openSession();
/* crio uma nova tranzação */
this.transacao = this.sessao.beginTransaction();
/* com minha sessão eu salvo os produtos passados por parametro */
this.sessao.save(produtos);
/* e comito com a tranzação */
this.transacao.commit();
} catch (HibernateException e) {
System.out.println("não conseguimos salvar seus dados"
+ e.getMessage());
} finally {
try {
this.sessao.close();
} catch (Throwable e) {
System.out.println("não foi possivel fechar sua sessão "
+ e.getMessage());
}
}
}
public void atualizar(Produtos produtos) {
try {
this.sessao = HibernateUtil.getSessionFactory().openSession();
this.transacao = this.sessao.beginTransaction();
this.sessao.update(produtos);
this.transacao.commit();
} catch (HibernateException e) {
System.out.println("não conseguimos atualizar seus dados"
+ e.getMessage());
} finally {
try {
this.sessao.close();
} catch (Throwable e) {
System.out.println("não foi possivel atualizar"
+ e.getMessage());
}
}
}
public void remover(Produtos produto) {
try {
sessao = HibernateUtil.getSessionFactory().openSession();
transacao = sessao.beginTransaction();
sessao.delete(produto);
transacao.commit();
} catch (HibernateException e) {
System.out.println("Não foi possível excluir o Produto. Erro: "
+ e.getMessage());
} finally {
try {
/*se a sessão estiver aberta ... feche*/
if (this.sessao.isOpen()) {
this.sessao.close();
}
} catch (Throwable e) {
System.out
.println("Erro ao fechar operação de exclusão. Mensagem: "
+ e.getMessage());
}
}
}
@SuppressWarnings("unchecked")
public List<Produtos> listar() {
List<Produtos> produtos = null;
try {
this.sessao = HibernateUtil.getSessionFactory().openSession();
this.transacao = this.sessao.beginTransaction();
Criteria filtro = this.sessao.createCriteria(Produtos.class);
produtos = (List<Produtos>) filtro.list();
this.transacao.commit();
} catch (Throwable e) {
if (this.transacao.isActive())
this.transacao.rollback();
} finally {
try {
if (this.sessao.isOpen())
this.sessao.close();
} catch (Throwable e) {
System.out
.println("Erro ao fechar operação de listagem. Erro: "
+ e.getMessage());
}
}
return produtos;
}
public Produtos buscar() {
Produtos produto = new Produtos();
try {
this.sessao = HibernateUtil.getSessionFactory().openSession();
this.transacao = this.sessao.beginTransaction();
Criteria filtro = this.sessao.createCriteria(Produtos.class);
produto.setIdProduto(produto.getIdProduto());
produto = (Produtos) filtro.list();
this.transacao.commit();
} catch (Throwable e) {
if (this.transacao.isActive())
this.transacao.rollback();
} finally {
try {
if (this.sessao.isOpen())
this.sessao.close();
} catch (Throwable e) {
System.out
.println("Erro ao fechar operação de listagem. Erro: "
+ e.getMessage());
}
}
return produto;
}
}
Minha classe regra de negocios
package br.com.drem.rn;
import java.util.List;
import br.com.drem.daos.*;
import br.com.drem.tabelas.*;
public class RegraNegocio {
private ProdutoDao prodDao = new ProdutoDao();
private Produtos produtos = new Produtos();
public String salva(Produtos prod){
prodDao.salvar(prod);
return null;
}
public List<Produtos> listar() {
return prodDao.listar();
}
public void remover(){
prodDao.remover(produtos);
}
public Produtos getProdutos() {
return produtos;
}
public void setProdutos(Produtos produtos) {
this.produtos = produtos;
}
}
Minha controller
package br.com.drem.controller;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import java.io.IOException;
import java.util.List;
import br.com.drem.daos.ProdutoDao;
import br.com.drem.rn.*;
import br.com.drem.tabelas.*;
@ManagedBean
public class CadastroProduto {
RegraNegocio rn = new RegraNegocio();
Produtos prod = new Produtos();
ProdutoDao pDao = new ProdutoDao();
List<Produtos> produtos = null;
public String salva() {
rn.salva(this.prod);
return "produto";
}
public String listar() {
produtos = rn.listar();
return "Listado";
}
public String remover(){
System.out.println("nem chegou");
rn.remover();
return"produto";
}
public void submit(ActionEvent event) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
"Correct", "Correct");
FacesContext.getCurrentInstance().addMessage(null, msg);
try {
FacesContext.getCurrentInstance().getExternalContext().redirect("../jsf/produto.xhtml");
} catch (IOException e) {
e.printStackTrace();
}finally{
}
}
public RegraNegocio getRn() {
return rn;
}
public void setRn(RegraNegocio rn) {
this.rn = rn;
}
public Produtos getProd() {
return prod;
}
public void setProd(Produtos prod) {
this.prod = prod;
}
public List<Produtos> getProdutos() {
return produtos;
}
public void setProdutos(List<Produtos> produtos) {
this.produtos = produtos;
}
}
e finalmente a minha index.xhtml
<?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://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<h:outputStylesheet library="css" name="estilo.css" />
</h:head>
<h:body>
<ui:composition template="/templates/layout.xhtml">
<ui:define name="title">Produtos do estoque</ui:define>
<ui:define name="content">
<h:outputText value="Lista de produtos"></h:outputText>
<h:form>
<h:panelGroup id="lista">
<h:dataTable value="#{cadastroProduto.produtos}" var="produto"
border="1">
<h:column headerText="Indice">
<h:outputText value="#{produto.idProduto}" />
</h:column>
<h:column headerText="Nome">
<h:outputText value="#{produto.nome}" />
</h:column>
<h:column headerText="Descrição">
<h:outputText value="#{produto.descricao}" />
</h:column>
<h:column headerText="Quantidade">
<h:outputText value="#{produto.quantidade}" />
</h:column>
<h:column headerText="Valor">
<h:outputText value="#{produto.valor}" />
</h:column>
<h:column headerText="Ações">
<h:commandButton action="#{cadastroProduto.remover}"
value="remover" id="produto" for="" />
</h:column>
</h:dataTable>
</h:panelGroup>
<h:commandButton value="Atualizar"
action="#{cadastroProduto.listar}" ajax="false">
<f:ajax execute="@form" render="lista"></f:ajax>
</h:commandButton>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
minha pilha
Nov 16, 2013 10:51:40 PM org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: hibernate.cfg.xml
Nov 16, 2013 10:51:40 PM org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: hibernate.cfg.xml
Nov 16, 2013 10:51:40 PM org.hibernate.internal.util.xml.DTDEntityResolver resolveEntity
WARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
Nov 16, 2013 10:51:40 PM org.hibernate.cfg.Configuration doConfigure
INFO: HHH000041: Configured SessionFactory: null
Nov 16, 2013 10:51:40 PM org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator instantiateExplicitConnectionProvider
INFO: HHH000130: Instantiating explicit connection provider: org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider
Nov 16, 2013 10:51:40 PM org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider configure
INFO: HHH010002: C3P0 using driver: org.gjt.mm.mysql.Driver at URL: jdbc:mysql://localhost/ComunicaWeb
Nov 16, 2013 10:51:40 PM org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider configure
INFO: HHH000046: Connection properties: {user=root, password=****}
Nov 16, 2013 10:51:40 PM org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider configure
INFO: HHH000006: Autocommit mode: false
Nov 16, 2013 10:51:40 PM com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager
Informações: Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@3ba4118a [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@b3889252 [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> z8kfsx8yrm7isp150k4v5|6982cbcc, idleConnectionTestPeriod -> 3000, initialPoolSize -> 5, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 200, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 20, maxStatements -> 50, maxStatementsPerConnection -> 0, minPoolSize -> 5, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@2ad021e4 [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> z8kfsx8yrm7isp150k4v5|254d0ebd, jdbcUrl -> jdbc:mysql://localhost/ComunicaWeb, properties -> {user=******, password=******} ], preferredTestQuery -> null, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, factoryClassLocation -> null, identityToken -> z8kfsx8yrm7isp150k4v5|4f59503f, numHelperThreads -> 3 ]
Nov 16, 2013 10:51:40 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
Nov 16, 2013 10:51:40 PM org.hibernate.engine.jdbc.internal.LobCreatorBuilder useContextualLobCreation
INFO: HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
Nov 16, 2013 10:51:40 PM org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000399: Using default transaction strategy (direct JDBC transactions)
Nov 16, 2013 10:51:40 PM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
Nov 16, 2013 10:51:40 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000228: Running hbm2ddl schema update
Nov 16, 2013 10:51:40 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000102: Fetching database metadata
Nov 16, 2013 10:51:40 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000396: Updating schema
Nov 16, 2013 10:51:40 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: ComunicaWeb.produtos
Nov 16, 2013 10:51:40 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [quantidade, valor, nome, idproduto, descricao]
Nov 16, 2013 10:51:40 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: []
Nov 16, 2013 10:51:40 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: [primary]
Nov 16, 2013 10:51:40 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete
Hibernate:
/* criteria query */ select
this_.idProduto as idProdut1_0_0_,
this_.descricao as descrica2_0_0_,
this_.nome as nome3_0_0_,
this_.quantidade as quantida4_0_0_,
this_.valor as valor5_0_0_
from
produtos this_
bom estou utilizando as seguintes tecnologias Hibernate, jsf, eclipse, mysql