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 : 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>
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
 
   <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 : 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();
	}
}
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 : 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 ?