IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Problème de mapping avec clés composées


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 23
    Points : 19
    Points
    19
    Par défaut 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 : 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 ?

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Une petite idée

Discussions similaires

  1. Problème d'écriture avec les Composants UIB
    Par zoheir13 dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/01/2008, 13h32
  2. Problème de map avec paramètre template
    Par bouba dans le forum Langage
    Réponses: 5
    Dernier message: 11/05/2007, 13h19
  3. Problème de syntaxe avec le composant TCppWebBrowser
    Par Ptite Développeuse dans le forum C++Builder
    Réponses: 10
    Dernier message: 19/04/2006, 15h48
  4. Problème d'affichage avec le composant JTable
    Par vidocq dans le forum Composants
    Réponses: 2
    Dernier message: 03/04/2006, 11h22
  5. [hibernate] Mapping avec identifiant composé
    Par miky_jo dans le forum Hibernate
    Réponses: 3
    Dernier message: 11/10/2005, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo