Boa tarde galera eu tenho a seguintes classes mapeadas:
Cliente:
[code]@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
} [/code]
Cidade:
[code]@Entity
@Table(name=“Cidade”)
public class Cidade{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long codigo;
@Column
private String Nome;
// get e set abaixo
} [/code]
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:
[code]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();
}
}
}
[/code]
minha pagina:
[code]<?xml version='1.0' encoding='UTF-8' ?>
Clientes cadastrados <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>
[/code]Quando eu vou abrir a pagina mostra todos os dados, menos o nome da cidade. Como é que faço pra exibir-la ? Abraços.