Chave primaria sendo também chave estrangeira - Hibernate

5 respostas
V

Boa tarde galera, eu tenho duas tabelas: País e Estado. Sendo que a tabela estado seria assim:

CREATE TABLE ESTADO (

ID_PAIS INTEGER NOT NULL PRIMARY KEY,

ID INTEGER NOT NULL PRIMARY KEY,

NOME VARCHAR(30) NOT NULL,

FOREING KEY(ID_PAIS) REFERENCES PAIS(ID)

);

Como eu faria isso no mapeamento hibernate ? Abraços.

Minha classe ta assim por enquanto:

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.*;
import org.hibernate.annotations.CollectionOfElements;

@Entity
@Table(name="ESTADO")
public class ESTADO implements Serializable {
    @Id
    @CollectionOfElements
    @JoinTable(name = "PAIS", joinColumns = @JoinColumn(name = "id"))
    @OneToMany
    private Collection<PAIS> id_pais;
    @Id
    private Integer id_estado;
    @Column(length=30, nullable=false)
    private String nome;
    
}

5 Respostas

fabio.cbrandao
@Entity
@Table(name = "estado")
public class Estado implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1683702755471737701L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "estado")
	@SequenceGenerator(name = "estado", sequenceName = "estado_seq")
	@Column(name = "id")
	private Long id;	
	
	@ManyToOne
	@JoinColumn(name="pais_id", nullable = false)
	private Pais pais;
	
	@Column(name = "nome", nullable = false, length = 100)
	private String nome;
	
	@Column(name = "sigla", nullable = false, length = 2)
	private String sigla;
luistiagos

pq ID_PAIS tem que ser primary key na sua tabela?

drsmachado

luistiagos:
pq ID_PAIS tem que ser primary key na sua tabela?²

Isso, ao meu ver, é um erro de arquitetura.

luistiagos

drsmachado:
luistiagos:
pq ID_PAIS tem que ser primary key na sua tabela?²

Isso, ao meu ver, é um erro de arquitetura.

ao meu ver também é… não vejo sentido nisso.

V

Isso é questão de curiosidade, apenas, mesmo assim obrigado.

Criado 13 de abril de 2012
Ultima resposta 13 de abr. de 2012
Respostas 5
Participantes 4