Hibernate + JSF + Primefaces(dataTable)

2 respostas
V

Boa tarde galera eu tenho a seguintes classes mapeadas:

Cliente:
@Entity
@Table(name="Cliente")
public class Cliente{	
	@Id 
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Long codigo;
        @Column
        private String Nome;
        @ManyToOne  
        @JoinColumn(name="cidade", nullable = false)  
        private Cidade cidade;

       // get e set abaixo
}
Cidade:
@Entity
@Table(name="Cidade")
public class Cidade{	
	@Id 
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Long codigo;
        @Column
        private String Nome;

        // get e set abaixo
}

Como pode ver cidade tem ligação com cliente, no caso para eu saber o nome da cidade do cliente faço assim:

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
	session.beginTransaction();
	List<Cliente> listaCliente = (List<Cliente>) session.createQuery("FROM Cliente").list();
        for (Cliente cliente: listaCliente) 
          System.out.println(cliente.getNome() + "mora em " + cliente.getCidade().getNome());
	session.getTransaction().commit();

até ai então beleza, mas quando vou colocar em um dataTable eu consigo botar os dados do clientes, menos os da cidade o meu Bean esta assim:

package bean;

import java.util.List;

import hibernate.HibernateUtil;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import org.hibernate.Session;


import modelo.Cliente;

@ManagedBean(name = "beanCliente")
@SessionScoped
public class BeanCliente {
	
	List<Cliente> listaCliente;
	Cliente Cliente = new Cliente();
	
	public BeanCliente() {
		inicio();
	}
		
	public Cliente getCliente () {
		return Cliente ;
	}

	public void setCliente (Cliente Cliente ) {
		this.Cliente = Cliente ;
	}
	
	public List<Cliente> getListaCliente() {
		return listaCliente;
	}

	public void setListaCliente(List<Cliente> listaCliente) {
		this.listaCliente = listaCliente;
	}
	
	public void inicio() {
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		try {
			listaCliente = (List<Cliente>) session.createQuery("FROM Cliente").list();
			session.getTransaction().commit();
		} catch (Exception ex) {
			session.getTransaction().rollback();
			ex.printStackTrace();
		}				
	}
	
}

minha pagina:

<?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:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
<h:head>
    <title>Clientes cadastrados</title>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</h:head>
  <h:form id="form">
      <p:dataTable var="Cliente" value="#{beanCliente.listaCliente}" paginator="true" rows="20" paginatorPosition="top">
		<p:column headerText="Código" style="width: 20px;">
	          	<h:outputText value="#{HELARMOV.HEL_COD_MOV}"> 
	          	</h:outputText>
		</p:column>

		<p:column headerText="Código" style="width: 150px;">
	          	<h:outputText value="#{Cliente.codigo}"/>
		</p:column>
		
		<p:column headerText="Nome" style="width: 120px;">
	          	<h:outputText value="#{Cliente.nome}"/>
		</p:column>

		<p:column headerText="Cidade" style="width: 150px;">
	          	<h:outputText value="#{Cliente.cidade.nome}"/>
		</p:column>
		
      </p:dataTable>

  </h:form>		
</html>

Quando eu vou abrir a pagina mostra todos os dados, menos o nome da cidade. Como é que faço pra exibir-la ? Abraços.

2 Respostas

Rodrigo_Sasaki

Simplesmente não aparece?

Eu faria o seguinte:

1 - Verificaria o console pra ver se nenhuma exceção está sendo lançada.
2 - Verificaria se a lista realmente está populada corretamente, e se o objeto Cidade está populado.

V

Não aparece nada, não da erro e quando eu faço isso:

Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); List<Cliente> listaCliente = (List<Cliente>) session.createQuery("FROM Cliente").list(); for (Cliente cliente: listaCliente) System.out.println(cliente.getNome() + "mora em " + cliente.getCidade().getNome()); session.getTransaction().commit();

aparece os dados da cidade, lembrando que isso eu rodo em uma classe java.

Criado 11 de julho de 2012
Ultima resposta 11 de jul. de 2012
Respostas 2
Participantes 2