Problème de mapping avec clés composées
Bonjour,
J'ai 2 tables :
- OOHEAD (Entête des commandes)
- OOLINE (Ligne des commandes)
Sachant qu'un entête de commande contient plusieurs ligne de commandes
Table OOHEAD
Clé primaire : OACONO, OADIVI, OAORNO
Table OOLINE
Clé primaire : OBCONO, OBDIVI, OBORNO, OBPONR
Clé étrangère : OBCONO, OBDIVI, OBORNO
Oohead.hbm.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
<hibernate-mapping>
<class name="Oohead" table="OOHEAD">
<composite-id name="cleOohead" class="CleOohead">
<key-property name="oacono" column="OACONO" type="big_decimal"/>
<key-property name="oadivi" column="OADIVI" type="string"/>
<key-property name="oaorno" column="OAORNO" type="string"/>
</composite-id>
<bag name="oolines" inverse="true">
<key>
<column name="obcono"/>
<column name="obdivi"/>
<column name="oborno"/>
</key>
<one-to-many class="Ooline"/>
</bag> |
Ooline.hbm.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
<hibernate-mapping>
<class name="Ooline" table="OOLINE">
<composite-id name="cleOoline" class="CleOoline">
<key-property name="obcono" column="OBCONO" type="big_decimal"/>
<key-property name="obdivi" column="OBDIVI" type="string"/>
<key-property name="oborno" column="OBORNO" type="string"/>
<key-property name="obponr" column="OBPONR" type="big_decimal"/>
</composite-id>
<many-to-one name="oohead" class="Oohead">
<column name="obcono"/>
<column name="obdivi"/>
<column name="oborno"/>
</many-to-one> |
J'ai écris 2 classes pour les clés primaires composites CleOohead et CleOoline
CleOohead.java :
Code:
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
public class CleOohead implements Serializable{
private static final long serialVersionUID = -2000941939092181721L;
private BigDecimal oacono;
private String oadivi;
private String oaorno;
public CleOohead() {
}
public CleOohead(BigDecimal oacono, String oadivi, String oaorno) {
this.oacono = oacono;
this.oadivi = oadivi;
this.oaorno = oaorno;
}
public BigDecimal getOacono() {
return oacono;
}
public void setOacono(BigDecimal oacono) {
this.oacono = oacono;
}
public String getOadivi() {
return oadivi;
}
public void setOadivi(String oadivi) {
this.oadivi = oadivi;
}
public String getOaorno() {
return oaorno;
}
public void setOaorno(String oaorno) {
this.oaorno = oaorno;
}
public boolean equals(Object o) {
return true;
}
public int hashCode() {
return oacono.hashCode();
}
} |
Idem pour CleOoline.java
J'ai fait une classe test qui remonte une commande en fournissant OACONO, OADIVI, OAORNO et je n'arrive pas à voir les lignes de la commandes (OOLINE) --> liste vide
Classe de test :
Code:
1 2 3 4 5
|
Serializable id = new CleOohead(new BigDecimal("1"), "TEST", "181000");
Oohead oohead1 = (Oohead) session.get(Oohead.class, id);
List oolines = (List)oohead1.getOolines();
System.out.println("oolines : " + oohead1.getOolines().size()); |
La taille de la liste des lignes de commandes (oohead1.getOolines().size()) est égale à 0, mon mapping est-il correct ? :?