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 :

ajout automatique d'une liste


Sujet :

Hibernate Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 26
    Points
    26
    Par défaut ajout automatique d'une liste
    Salut,

    Voici mon fichier de mapping :

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
    	<class name="bean.Procedure" schema="salut" table="PROCEDURE">	
    		<composite-id>
    			<key-property column="FILIERE_CODE" length="18" name="codeFiliere" type="int"/>
    			<key-property column="PROCEDURE_CODE" length="18" name="codeProc" type="int"/>
    		</composite-id>
     
    		<set name="listeMail" lazy="true">
    			<key>
    				<column name="FILIERE_ID"/>
    				<column name="PROC_ID"/>
    			</key>
    			<one-to-many class="bean.Mail"/>
    		</set>
    	</class>	
    </hibernate-mapping>
    J'aimerais savoir si quand je ferai un ajout d'une procédure ca ajoutera aussi ma liste de mail dans ma table mail ??

  2. #2
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Si tu veux qu'elle soit ajoutée, ajoute l'attribut cascade="insert-update" je ne sais plus trop. Cela permettra d'ajouter la liste en enregistrant la procédure. Pour les effacements, tu devras étudier la question :
    "en supprimant une procédure, est ce que je supprime les mails qui en dépendent ou non ? est ce que je ne supprime que ceux qui n'ont plus de lien du coup ?"

    Cas 1 : Tu detruit directement donc cascade="all"
    Cas 2 : Tu détruit si orphelin donc cascade="all-delete-orphan"
    Cas 3 : Tu ne détruit jamais ou bien que manuellement (donc directement le mail) alors tu laisses cascade="insert-update"

    Bon courage
    See you, space cowboy... and if you're satisfied, click on

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 143
    Points
    143
    Par défaut
    Je travaille en "collaboration" avec galak ! Et : cascade="save-update" existe !
    Mais pas cascade="insert-update" ! Mais, ça ne fonctionne pas !

  4. #4
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Ah les boules, deux ex-collaborateurs de _beber85, mes pauvres !
    euh, oui, on m'a déjà fait la remarque le même jour, c'est bien save-update et non insert-update .

    Bon d'apres le post de galak, on n'etait pas au courant que ca ne fonctionnait pas

    Peut on voir le log à ce sujet pour mieux comprendre l'erreur qui y est engendrée ? C'est une erreur ou bien simplment une non présence en base ?!?
    See you, space cowboy... and if you're satisfied, click on

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    C'est une non présence ne base. Du coup, je parcours ma liste et j'ajoute mes objets un par un dans ma base !

  6. #6
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Ca n'est malheureusement pas la première fois que je rencontre ce problème sur ce forum ... c'est étrange tout de même que, de mon coté, cela fonctionnait à merveille . (sur les deux modes : table de jointure ET clé etrangère)

    Petite question : l'association est elle bidirectionnelle ou non ?!? Si oui, puis-je voir le mapping de l'association des deux cotés ?!? Merci
    See you, space cowboy... and if you're satisfied, click on

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    Oui elle est bidirectionnelle

    Voici les mappings :
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
    	<class name="bean.Procedure" schema="xxx" table="SG_PROCEDURE">	
    		<composite-id>
    			<key-property column="FILIERE_CODE" length="18" name="codeFiliere" type="int"/>
    			<key-property column="PROCEDURE_CODE" length="18" name="codeProc" type="int"/>
    		</composite-id>
     
    		<property column="RIB_IHM_ID" length="18" name="ribIhmId" not-null="true" type="int"/>
     
    		<set name="listeMail" lazy="true">
    			<key>
    				<column name="FILIERE_ID"/>
    				<column name="PROC_ID"/>
    			</key>
    			<one-to-many class="bean.Mail"/>
    		</set>
    	</class>			
    </hibernate-mapping>
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
    	<class name="bean.Mail" schema="xxx" table="SG_MAIL">
    		<composite-id>
    			<key-many-to-one name="procedure" class="bean.Procedure">
    	        	<column name="FILIERE_ID"/>
    	        	<column name="PROC_ID"/>
            	</key-many-to-one>
    			<key-property column="MAIL_ID" length="18" name="codeMail" type="int"/>
    		</composite-id>
     
    		<property column="MAILADDRESSES" length="500" name="adresse" not-null="true" type="string"/>
    	</class>
    </hibernate-mapping>

  8. #8
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    hum, je vois que tu n'es pas tombé sur le cas de mapping le plus simple

    Premiere chose: étant bidirectionnelle, il faut que tu définisses une des deux cotés à inverse="true" dans le but de faire comprendre à Hibernate que tu ne sauvegardes que l'un des deux et non les deux.

    Après pour le reste, les deux mappings semblent corrects ... n'as tu aucune trace de requetes SQL permettant de vior qu'il ne gère pas les enregistrements ?
    Essaie peut etre d'indiquer également :
    insert="true" update="true" cascade="save-update" à ton association afin de lui faire comprendre explicitement qu'il faut aller fouiller cet attribut pour enregistrer l'objet ...

    http://www.hibernate.org/hib_docs/v3...-bidirectional
    http://www.hibernate.org/hib_docs/v3...irectional-m21
    Ces deux liens (surtout le premier sur la persistance et la propriété inverse) pourront peut etre t'aider un peu
    See you, space cowboy... and if you're satisfied, click on

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    Merci, je vais faire ces tests demain. Je te tiendrai au courant

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    Salut,

    J'ai rajouté inverse="true" sur tes conseils et ca marche !!!

    Merci

  11. #11
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    De rien,

    Bon courage pour la suite
    See you, space cowboy... and if you're satisfied, click on

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ajouter un élement à une liste ?
    Par debutant-1 dans le forum C
    Réponses: 19
    Dernier message: 19/05/2006, 12h30
  2. ajout automatique d'une extension
    Par menuge dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 03/04/2006, 16h25
  3. Ajout/Suppression d'une liste a l'autre
    Par PeZ dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/03/2006, 14h39
  4. [VBA-E 97]Ajout automatique d'une colonne selon la date
    Par paflolo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/03/2006, 09h35
  5. TValueListEditor: Ajout automatique d'une ligne vide
    Par Patrick Seuret dans le forum C++Builder
    Réponses: 3
    Dernier message: 24/06/2005, 12h16

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