Renderizando com EL no JSF com 3 classes

4 respostas
raffamz

Amigos,

EU tenho as classes modelos : Pessoa, Endereco e Telefone.
No meu ManageBean (PessoaBean), estou montando um dataTable para renderizar as informações que forem sendo cadastras (nome, endereço e telefone), porém estou tendo dificuldade quando vou renderizar as informações de endereço e telefone. Só consigo renderizá-las se criar outro dataTable.

Como posso trabalhar com um único dataTable? Pois criando outro dataTable fico com problemas para alteração e exclusão.

Obs: Estou utilizando Hibernate+JSF

Abraços

4 Respostas

Hebert_Coelho
Se todos os objetos estiverem ligados a pessoa, você poderia fazer:

#{pessoa.nome}

#{pessoa.carro.cor}

#{pessoa.endereco.rua}

Agora, se forem objetos distintos, aí não tem como não. A não ser que você crie uma classe para agrupar os 3. O.o

raffamz

Amigo,

Então, eles estão mapeadas:

Classe Pessoa

@OneToMany(mappedBy = "pessoa", targetEntity = Endereco.class)
private Endereco endereco;

@OneToMany(mappedBy = "pessoa", targetEntity = Telefone.class)
private Telefone telefone;

Classe Endereço

@ManyToOne
private Pessoa pessoa;

Classe Telefone[/u]

@ManyToOne
private Pessoa pessoa;
Tentei percorrer da forma que disse:
#{pessoa.telefone.numero}

Mas não puxa nenhum valor!

Hebert_Coelho

Primeiro você precisa aprender a utilizar o mapeamento corretamente.

Aqui mostra como utilizar OneToOne, OneToMany e ManyToMany do modo certo: JPA: Mini Livro - Primeiros passos e conceitos detalhados.

raffamz

Meu amigo Hebert,

Desculpe se não te fiz entender....escrevi a classe rápida no trabalho só para ter ideia do que eu estava falando, não se atenha ao código para o Hibernate. Mas, como o amigo quer me ajudar, segue o código de forma integral:

Classe Pessoa:

package com.souza.modelo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class Pessoa {

	@Id
	@GeneratedValue
	@Column(name = "id_pessoa")
	private Integer id;
	private String nome;

	@OneToMany(mappedBy = "pessoa")
	//private List<Endereco> end1;
	private Endereco endereco;

	@OneToMany(mappedBy = "pessoa")
	//private List<Telefone> tel1;
	private Telefone telefone;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Endereco getEnd1() {
		return endereco;
	}

	public void setEnd1(Endereco end1) {
		this.endereco = end1;
	}

	public Telefone getTel1() {
		return telefone;
	}

	public void setTel1(Telefone tel1) {
		this.telefone = tel1;
	}


	
}

Classe Endereço

package com.souza.modelo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Endereco {
	
	@Id
    @GeneratedValue
    @Column(name="id_end")
    private Integer idEnd;
    private String logradouro;
    private String bairro;
    private String complemento;
    private String cep;
    
    @ManyToOne//(fetch = FetchType.EAGER)
    @JoinColumn(name="id_pessoa")
    private Pessoa pessoa;

	public Integer getIdEnd() {
		return idEnd;
	}

	public void setIdEnd(Integer idEnd) {
		this.idEnd = idEnd;
	}

	public String getLogradouro() {
		return logradouro;
	}

	public void setLogradouro(String logradouro) {
		this.logradouro = logradouro;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public String getComplemento() {
		return complemento;
	}

	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}

}

Classe Telefone

package com.souza.modelo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Telefone {
	
	@Id
    @GeneratedValue
    @Column(name="id_tel")
    private Integer idTel;
    private Integer ddd;
    private Integer numero;
    
    @ManyToOne//(fetch = FetchType.EAGER)
    @JoinColumn(name="id_pessoa")
    private Pessoa pessoa;

	public Integer getIdTel() {
		return idTel;
	}

	public void setIdTel(Integer idTel) {
		this.idTel = idTel;
	}

	public Integer getDdd() {
		return ddd;
	}

	public void setDdd(Integer ddd) {
		this.ddd = ddd;
	}

	public Integer getNumero() {
		return numero;
	}

	public void setNumero(Integer numero) {
		this.numero = numero;
	}

	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
}

O amigo, tem como me ajudar?

Abraço.

Criado 16 de novembro de 2012
Ultima resposta 17 de nov. de 2012
Respostas 4
Participantes 2