raffamz
Novembro 16, 2012, 7:04pm
#1
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
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
Novembro 16, 2012, 10:24pm
#3
Amigo,
Então, eles estão mapeadas:
Classe Pessoa [u]
[code]@OneToMany (mappedBy = “pessoa”, targetEntity = Endereco.class)
private Endereco endereco;
@OneToMany (mappedBy = “pessoa”, targetEntity = Telefone.class)
private Telefone telefone;[/code]
Classe Endereço [/u]
@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!
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
Novembro 17, 2012, 11:49pm
#5
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
[code]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;
}
}[/code]
Classe Telefone
[code]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;
}
}
[/code]
O amigo, tem como me ajudar?
Abraço.