Olá, estou fazendo um projeto JSF com hibernate. E estou com dificuldade em listar os clientes, a página ListaClientes.xhtml abre vazia, não traz nenhum dos clientes que está no banco de dados. Sendo que há 3 registros no banco.
Está assim o código: Na Model: Cliente.java
package model;
...import...
@Entity
@Table(name="cliente")
public class Cliente {
private int id;
private String cpf;
private String nome;
private String Sobrenome;
public Cliente() {
}
public Cliente(Integer id, String cpf, String nome, String Sobrenome) {
this.id = id;
this.cpf = cpf;
this.nome = nome;
this.Sobrenome = Sobrenome;
}
@Id
@Column(name="idCliente")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSobrenome() {
return Sobrenome;
}
public void setSobrenome(String Sobrenome) {
this.Sobrenome = Sobrenome;
}
}
No pacote DAO: ClienteDAO.java
package DAO;
import Util.HibernateUtil;
import java.util.List;
import javax.persistence.Query;
import model.Cliente;
import org.hibernate.Session;
public class ClienteDAO {
private Cliente cliente;
private List<Cliente> clientes;
public void adicionarCliente(Cliente cliente){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.save(cliente);
session.getTransaction().commit();
}
public List<Cliente> listaClientes(){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List select = session.createQuery("from Cliente").list();
session.getTransaction().commit();
return select;
}
}
na pasta Bean: ClienteMB.java
package Bean;
import DAO.ClienteDAO;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import model.Cliente;
@ManagedBean
@RequestScoped
public class ClienteMB {
private Cliente cliente;
private ClienteDAO clienteDAO;
/**
* Creates a new instance of ClienteMB
*/
public ClienteMB() {
}
@PostConstruct
public void init (){
clienteDAO = new ClienteDAO();
cliente = new Cliente();
}
public void salvarCliente(){
clienteDAO.adicionarCliente(this.cliente);
}
public void listarClientes(){
clienteDAO.listaClientes();
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public ClienteDAO getClienteDAO() {
return clienteDAO;
}
public void setClienteDAO(ClienteDAO clienteDAO) {
this.clienteDAO = clienteDAO;
}
}
E a página ListaCliente.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://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Lista de Clientes</title>
</h:head>
<h:body>
<h:dataTable id="tabelaClientes" value="#{clienteMB.listarClientes()}" var="clientes">
<h:column>
<f:facet name="header">Código</f:facet>
<h:outputLabel value="#{clientes.id}" />
</h:column>
<h:column>
<f:facet name="header">CPF</f:facet>
<h:outputLabel value="#{clientes.cpf}" />
</h:column>
<h:column>
<f:facet name="header">Nome</f:facet>
<h:outputLabel value="#{clientes.nome}" />
</h:column>
<h:column>
<f:facet name="header">Sobrenome</f:facet>
<h:outputLabel value="#{clientes.sobrenome}" />
</h:column>
</h:dataTable>
<h:form>
<h:commandButton value="Incluir Cliente"/>
</h:form>
</h:body>
</html>
desde já agradeço toda ajuda.