Duvida mapeamento hibernate

4 respostas
carlos_maia

[color=blue]Bom dia tenho uma dúvida sobre mapeamento realizado no Hibernate

Eu tenho uma tabela chamado de pais que possui os campos id, descricao, data,
Eu tenho uma outra tabela chamado de estado que possui os campos idEstado, descEstado, data, idPais

Na hora que eu for criar o mapeamento do idPais com a tabela país como é que eu faria no hibernate?

Atenciosamente
Carlos Eduardo[/color]

4 Respostas

davidbuzatto

Com anotações?

@Entity
public class Pais {

     // campos da classe Pais...

}

@Entity
public class Estado {

    // campos da classe Estado...

    // Como a chave extrangeira vai ficar contida na tabela estado
    // então você precisa de uma referência à tabela pais do lado do estado
    @ManyToOne
    private Pais pais;

}

Você ainda poderia, usando o exemplo da classe Estado que mencionei, ter uma associação bidirecional entre Pais e Estado, fazendo assim:

@Entity
public class Pais {

    // campos da classe Pais

    // A dona do relacionamento é a classe Estado
    // essa lista (ou qualquer outra coleção que julgar ser melhor)
    // é a ligação inversa à feita na classe Estado.
    // note que o mappedBy se refere ao nome da referência à classe Pais
    // dentro da classe Estado
    @OneToMany( mappedBy = "pais")
    private List<Estado> estados;
    
}

[]'s

E

Bom dia carlos…

vc poderia fazer algo assim considerando que

  • um pais possui muitos estados
  • estado tem um pais

o mapeamento ficaria assim:

na classe pais

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pais")
public Set<Estado> getEstados() {
	return this.estados;
}

e na classe estado:

@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "idpais", nullable = false)
	public Pais getPais() {
		return this.pais;
	}
marcelocenerine
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name="TABELA_PAIS")
public class Pais implements Serializable {

    @Id
    private Integer id;
    private String descricao;
    @Temporal(TemporalType.DATE)
    private Date data;
    @OneToMany(mappedBy = "pais")
    private List<Estado> estados;

    // getters e setters omitidos...
}

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;

@Entity
@Table(name = "TABELA_ESTADO")
public class Estado implements Serializable {
    @Id
    @Column(name="idEstado")
    private Integer id;
    @Column(name="descEstado")
    private String descricao;
    @Temporal(value = javax.persistence.TemporalType.DATE)
    private Date data;
    @ManyToOne
    @JoinColumn(name="idPais")
    private Pais pais;

    // getters e setters omitidos...
}

A navegação depende muito da sua necessidade (pais->estados, estado->pais).

carlos_maia

Obrigado pessol pela ajuda.

Abraços

Criado 7 de outubro de 2011
Ultima resposta 7 de out. de 2011
Respostas 4
Participantes 4