Exibir resultado de busca na página (Hibernate + JSF)

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

[code]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;
}

}[/code]

Regra de Negocio

[code]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;
}

}[/code]

ClienteBean

[code]@ManagedBean (name=“clienteBean”)
@RequestScoped
public class ClienteBean {
private Cliente cliente = new Cliente();
private Pessoa pessoa = new Pessoa();
public List 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;
}

}[/code]

Página consultacliente.jsf

[code]<?xml version="1.0" encoding="ISO-8859-1" ?>

Consulta Cliente

Sistema de Gerenciamento de Petshop


Busca de Clientes






Listagem de Clientes

	<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>

[/code]

Resolvido. O erro realmente era algo simples e um amigo aqui do trabalho me deu “o caminho das pedras”.

O hibernate executava o SQL e ele me traz o dado bruto apenas, portanto na classe ClienteDAOHibernate foi preciso apenas adicionar uma clausula para que isso fosse tratado.

De:

Para:

Tópico encerrado