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
}
@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.