ForeignKey no Hibernate

6 respostas
spadinha

ola

estou com um problema para usar o foreignkey no hibernate

veja so

tenho 2 classe uma é o grupo de custo onde a primarykey e um string de 2 digitos

e outra classe que seria o centro de custo onde teria q ter o grupo de custo e a primary key teria que ser um string de 3 digitos…

tendo o grupo de custo como foregnkey

alguem teria um modelo de annotations mais ou menos parecido com isso

eu li a documentaçao e fiz o seguinte

porem estou tendo alguns problemas.

@Entity

@PrimaryKeyJoinColumns( { @PrimaryKeyJoinColumn(name = grupoDeCusto_id) })

public class CentroDeCusto implements Serializable, Comparable {
@ForeignKey(name = "grupoDeCusto")
@ManyToOne
private GrupoDeCusto grupoDeCusto;

@Id
@Column(length = 3)
private String id;

@Column(length = 40)
private String descricao;

}

@Entity
public class GrupoDeCusto implements Serializable, Comparable {

@Id
private String id;

@Column(length = 40)
private String descricao;

@OneToMany(mappedBy = "grupoDeCusto")
private Collection<CentroDeCusto> centrosDeCusto;

}

se alguem puder me ajudar

6 Respostas

pablofaria

É só usar o @JoinColum

@Entity 
public class CentroDeCusto implements Serializable, Comparable&lt;CentroDeCusto&gt; { 

@Id
@Column("centroDeCusto_id")  
private String id; 

@ManyToOne 
@JoinColumn(name="grupoDeCusto_id", referencedColumnName="grupoDeCusto_id")
private GrupoDeCusto grupoDeCusto; 

@Column(length = 40) 
private String descricao; 
} 


@Entity 
public class GrupoDeCusto implements Serializable, Comparable&lt;GrupoDeCusto&gt; { 

@Id
@Column("grupoDeCusto_id")  
private String id; 

@Column(length = 40) 
private String descricao; 

@OneToMany(mappedBy = "grupoDeCusto") 
private Collection&lt;CentroDeCusto&gt; centrosDeCusto; 

}
spadinha

ok

porem eu preciso incluir

no caso

no grupo de custo 01

incluir os centros 001 002 003

e dae no grupo de custo 02

incluir os centros 001 002 003 tb

vc sabe me dizer se assim vai funcionar…

pq ele tem q ser como se fosse primarykey tb

pablofaria

Você quer uma chave composta então??

spadinha

isso mesmo

mais ja li muitas pessoas desaconselharem o uso de chave composta…

sera q compensa atribuir uma chave composta para isso??

pablofaria

Se for um banco de dados legado não existe como fugir da chave composta…

Mais se for uma aplicação nova, também aconselho a não usar. Além de ser complexo axredido que não existe a necessidade.

A não ser que seja um caso muito específico!

spadinha

kra valew pelo conselho ,

eu ja tinha decidido nao usar mesmo.

fiz por generated value e fiz uns tratamentos para escolha pelo objeto direto por toString.

hora que eu for utilizar eu utilizo filtros.

acho q fica mais facil.

Criado 23 de maio de 2008
Ultima resposta 23 de mai. de 2008
Respostas 6
Participantes 2