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

1 resposta
G

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>

1 Resposta

G

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

Criado 31 de outubro de 2013
Ultima resposta 31 de out. de 2013
Respostas 1
Participantes 1