Prezados, bom dia.
Estou com um problema que já pesquisei sobre o assunto e nenhuma das dicas me ajudou. O que acontece é o seguinte, eu estou desenvolvendo um projeto web para meu TCC que utiliza hibernate + jsf e neste projeto eu tenho uma tela de consulta de clientes cadastrados. Quando eu efetuo a consulta, o resultado da busca carrega os dados em uma lista e exibe o resultado na mesma tela em um segundo formulario.
Em outras consultas eu fiz isso normalmente utilizando o critéria e funcionou sem problemas, porém como a consulta de clientes vai comparar o id de duas tabelas (pessoa e cliente) eu resolvi fazer essa busca utilizando queries nomeadas e eu já vi que a consulta me traz o objeto que eu quero mas não exibe o retorno em tela igual as outras consultas já implementadas. Alguem tem alguma sugestão do que pode ser ou o que mais eu posso pesquisar pra tentar resolver esse problema????
Desde já agradeço pelo auxílio.
Segue abaixo o código:
ClienteDAOHibernate
public class ClienteDAOHibernate implements ClienteDAO {
private Session session;
public void setSession(Session session){
this.session = session;
}
@Override
public void salvar(Cliente cliente) {
this.session.save(cliente);
}
@Override
public void alterar(Cliente cliente) {
this.session.saveOrUpdate(cliente);
}
@Override
public void excluir(Cliente cliente) {
this.session.delete(cliente);
}
@Override
public List<Pessoa> buscar(String nome) {
String sql = "SELECT * FROM cliente c, pessoa p where c.cod_pessoa = p.cod_pessoa and p.nome like '"+nome+"%'";
SQLQuery query = this.session.createSQLQuery(sql);
List<Pessoa> pessoas = query.list();
return pessoas;
}
}
Regra de Negocio
public class ClienteRN {
private ClienteDAO clienteDAO;
private Pessoa pessoa;
private Cliente cliente;
public ClienteRN() {
this.clienteDAO = DAOFactory.cadastrarClienteDAO();
}
public void salvar(Cliente cliente){
if(cliente.getCodigoCli()==null||cliente.getCodigoCli()==0){
this.clienteDAO.salvar(cliente);
}else {
this.clienteDAO.alterar(cliente);
}
}
public void excluir (Cliente cliente){
this.clienteDAO.excluir(cliente);
}
public List<Pessoa> buscar(String nome){
return this.clienteDAO.buscar(nome);
}
public ClienteDAO getClienteDAO() {
return clienteDAO;
}
public void setClienteDAO(ClienteDAO clienteDAO) {
this.clienteDAO = clienteDAO;
}
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
}
ClienteBean
@ManagedBean (name="clienteBean")
@RequestScoped
public class ClienteBean {
private Cliente cliente = new Cliente();
private Pessoa pessoa = new Pessoa();
public List<Pessoa> listaCliente;
private String nome;
private Session sessao;
public void setSession(Session sessao){
this.sessao = sessao;
}
public String salvar(){
//FacesContext context = FacesContext.getCurrentInstance();
PessoaRN pessoaRN = new PessoaRN();
ClienteRN clienteRN = new ClienteRN();
if(pessoa.getPessoa()==null||pessoa.getPessoa()==0){
this.cliente.setPessoa(pessoa);
pessoaRN.salvar(this.pessoa);
clienteRN.salvar(this.cliente);
System.out.println("Usuário cadstrado!");
}
return "/publico/sucesso";
}
public List<Pessoa> buscarCliente() throws SQLException {
ClienteRN clienteRN = new ClienteRN();
listaCliente = (List<Pessoa>) clienteRN.buscar(nome);
System.out.println(listaCliente);
System.out.println("EXECUTOU O METODO");
return listaCliente;
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
public List<Pessoa> getListaCliente() {
return listaCliente;
}
public void setListaCliente(List<Pessoa> listaCliente) {
this.listaCliente = listaCliente;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Session getSessao() {
return sessao;
}
public void setSessao(Session sessao) {
this.sessao = sessao;
}
}
Página consultacliente.jsf
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Consulta Cliente</title>
<h:outputStylesheet library="css" name="estilo.css" />
</h:head>
<h:body>
<h1>Sistema de Gerenciamento de Petshop</h1>
<br/>
<h:form id="buscarCliente">
<h:messages/>
<h2>Busca de Clientes</h2>
<hr/>
<hr/>
<h:outputLabel value="Consultar clientes: " for="pessoa"/>
<h:inputText id="pessoa" label="pessoa" value="#{clienteBean.nome.nome}" required="true" />
<h:commandButton value="Listar cliente" action="#{clienteBean.buscarCliente}">
<f:ajax execute="@form" render=":lista"/>
</h:commandButton>
<hr/>
<hr/>
</h:form>
<br/>
<h:form id="lista">
<h2>Listagem de Clientes</h2>
<h:dataTable value="#{clienteBean.listaCliente}" var="pessoa" rules="rows" cellpadding="4" >
<h:column>
<f:facet name="header">Nome</f:facet>
#{pessoa.nome}
</h:column>
<h:column>
<f:facet name="header">Endereço</f:facet>
#{pessoa.rua}
</h:column>
<h:column>
<f:facet name="header">Telefone</f:facet>
#{pessoa.telefone}
</h:column>
<h:column>
<f:facet name="header">Cidade</f:facet>
#{pessoa.cidade}
</h:column>
</h:dataTable>
</h:form>
</h:body>
</html>