Est ce que la clé primaire de Contrat_CompagnieTransport est la composition des deux clé étrangère qui font la relation avec tes deux tables Contrat et CompagnieTransport?
Oui sur le principe. ton idée est bonne, mais pas complète. Voila ce que je fais d'habitude dans ce cas là, tu crées effectivement une entité intermédiaire, et sa clé primaire est un EmbeddedId, une classe imbriquée, qui comportera 2 attributs (y compris les accesseurs) de même type que les attributs clés primaires de compagnie et transport). voila un exemple : Classe clé doublon :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| public class ClassDoublonIdEntity implements Serializable{
/**
*
*/
private static final long serialVersionUID = -1906922531810845505L;
private Integer idAttr1;
private Integer idAttr2;
/**
* @return the idAttr1
*/
@Column(name = "id_attr_1", nullable = false)
public Integer getIdAttr1() {
return this.idAttr1;
}
/**
* @param aIdSiteStat the idSiteStat to set
*/
public void setIdSiteStat(Integer id) {
this.idAttr2= id;
}
/**
* @return the idAttr2
*/
@Column(name = "id_attr2", nullable = false)
public Integer getIdAttr2() {
return this.idAttr12;
}
/**
* @param idAttr12 the idAttr12to set
*/
public void setIdAttr2(Integer id) {
this.idAttr12= id;
} |
Son appel dans ta classe à mapper sur la table d'association:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
@Entity
@Table(name = "Table_association")
public class ClassAssoEntity implements Serializable{
/**
*
*/
private static final long serialVersionUID = 7554279265008007593L;
private ClassDoublonIdEntity idDoublon;
/**
* @return the idDoublon
*/
/**
* @return : id retourné
*/
@EmbeddedId
@AttributeOverrides( {
@AttributeOverride(name = "id_attr_1", column = @Column(name = "id_attr_1", nullable = false)),
@AttributeOverride(name = "id_attr_2", column = @Column(name = "id_attr_2", nullable = false)) })
public ClassDoublonIdEntity getIdDoublon() {
return this.idDoublon;
}
/**
* @param aIdDoublon the idDoublon to set
*/
public void setIdDoublon(ClassDoublonIdEntity aIdDoublon) {
this.idDoublon = aIdDoublon;
}
...
Tes autres attributs
...
} |
Voila voila, n'hesites pas si t'as d'autres questions.
Partager