Duvida com Hibernate

6 respostas
R

Boa Tarde.
Sou iniciante em java e estou com uma duvida em um relacionamento um para muitos no hibernate.Consigo salvar e deletar os dados no banco mas na hora de vizualizar to enrolado não sei como fazer.
Se alguem puder me ajudar eu agradeço.

Abaixo segue o codigo. É uma agenda de teste onde uma pessoa tem varios telefones Pessoa
public class Pessoa  implements java.io.Serializable {


     private Integer id;
     private String endereco;
     private String nome;
     private Set telefone;


    public Pessoa() {
    }

    public Set getTelefone() {
        return telefone;
    }

    public void setTelefone(Set telefone) {
        this.telefone = telefone;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    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;
    }

   

   
}
Telefone
package entidades;


public class Telefone {
    private Integer id;
    private String numero;

  public Integer getId() {
        return id;
    }

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

    public String getNumero() {
        return numero;
    }

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

}
pessoa.hbm
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 02/03/2011 15:36:42 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
  <class catalog="mydb" name="entidades.Pessoa" table="pessoa">
    <id name="id" type="java.lang.Integer">
      <column name="id"/>
      <generator class="identity"/>
    </id>
    <property name="endereco" type="string">
      <column length="30" name="endereco"/>
    </property>
    <property name="nome" type="string">
      <column length="30" name="nome"/>
    </property>
    <set cascade="all" name="telefone" table="telefone">
      <key column="id_pessoa"/>
      <one-to-many class="entidades.Telefone"/>
    </set>
  </class>
</hibernate-mapping>
Consigo ver os dados da pessoa mas na hora de ver os telefones relacionados não estou conseguindo.

6 Respostas

dudu_sps

se o nome da sua classe é Telefone

porque voce colocou

private Set telefone;

o certo seria

private Telefone telefone;
R

dudu_sps:
se o nome da sua classe é Telefone

porque voce colocou

private Set telefone;

o certo seria

private Telefone telefone;

Desse modo eu não estaria indicando que é muitos para um ?
eu queria fazer de um para muitos,posso fazer dessa forma que vc indicou?Assim fiz uma vez e funcionou, não vai me dar problema se for usar em um relacionamento com varias tabela?
Obrigado

L

rguzzo, meu camarada…vamos la…

Uma pessoa possui muitos telefones correto???

Então na sua classe Telefone você teria um atributo assim…

@ManyToOne
private Pessoa pessoa;

Com seus get and setters…

e na sua classe Pessoa você teria um atributo assim…

@OneToMany(mappedBy="AQUI VOCE COLOCA O NOME DO ATRIBUTO QUE VOCÊ DETERMINOU NA TABELA TELEFONE(NESSE CASO EU DETERMINEI COMO pessoa)")
List<Tetelefone> telefones = new ArrayList<Telefone>();

Tambem com seus get and setters!!!

espero ter ajudado!!

L

A claro, um erro meu no código…

Abaixo de cada anotação @ManyToOne, é necessário a inserção da anotação @JoinColumn.
Onde nesta anotação você determina qual vai ser o join que as tabelas deveram efetuar quando você quiser retornar os dados e visualizalos…

Absss

T

na verdade, pelo que eu estou vendo vc esta usando Xml para mapear as tabelas certo?

R

Isso como estou começando agora estou usando xml e não o anotations.Qdo acabar esse vou passar para o anotations.

Criado 5 de março de 2011
Ultima resposta 6 de mar. de 2011
Respostas 6
Participantes 4