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 :
Ooline.hbm.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
J'ai écris 2 classes pour les clés primaires composites CleOohead et CleOoline
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
CleOohead.java :
Idem pour CleOoline.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } }
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?![]()
Partager