Duvida mapeamento hibernate

[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]

Com anotações?

[code]@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;

}[/code]

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

[code]@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;

}[/code]

[]'s

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

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).

Obrigado pessol pela ajuda.

Abraços