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:
	
| 12
 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:
	
| 12
 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:
	
| 12
 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:
	
| 12
 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 ? :?