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 :

Commit, problème d'intégrité


Sujet :

Hibernate Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Par défaut Commit, problème d'intégrité
    Bonjour,

    Je viens de reprendre le travail d'un de mes collègues et je ne maitrise pas encore toutes les technologies.

    Voilà mon problème

    j'ai une table A et une table B avec un clé étrangère de la table A

    Je fais un save d'un objet A et puis un save d'un objet B sans problème
    mais lors du commit, j'ai l'erreur suivante : ORA-02291: violation de contrainte d'intégrité - clé parente introuvable.

    Avec hibernate je fais afficher les requêtes SQL et il y a bien un INSERT d'un object A dans la base de données avant l'INSERT d'un objet B ( là ou il y a un problème )

    J'ai aussi trouvé un ancien sujet ici qui résume mon problème: http://www.developpez.net/forums/d18...te-dintetrite/

    Mais n'étant pas encore bien familié avec les outils, je voudrais savoir comment verifier si l'incrémentation de l'id du père est effectué comme dans le sujet du lien ci dessus

    Si quelqu'un pouvait m'éclairer

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 251
    Par défaut
    Il y a plusieurs façons de persister ce type de relation notamment en fonction de l'option cascade au niveau des relations.
    Pourrais tu poster succintement la façon dont du persistes tes entités ainsi que le mapping de celles-ci, cela aiderais à la résolution.

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Citation Envoyé par kenzoshin Voir le message
    Bonjour,

    Je viens de reprendre le travail d'un de mes collègues et je ne maitrise pas encore toutes les technologies.

    Voilà mon problème

    j'ai une table A et une table B avec un clé étrangère de la table A

    Je fais un save d'un objet A et puis un save d'un objet B sans problème
    mais lors du commit, j'ai l'erreur suivante : ORA-02291: violation de contrainte d'intégrité - clé parente introuvable.

    Avec hibernate je fais afficher les requêtes SQL et il y a bien un INSERT d'un object A dans la base de données avant l'INSERT d'un objet B ( là ou il y a un problème )

    J'ai aussi trouvé un ancien sujet ici qui résume mon problème: http://www.developpez.net/forums/d18...te-dintetrite/

    Mais n'étant pas encore bien familié avec les outils, je voudrais savoir comment verifier si l'incrémentation de l'id du père est effectué comme dans le sujet du lien ci dessus

    Si quelqu'un pouvait m'éclairer
    Bonjour, peut on voir le mapping de ton entité A et celui de ton entité B? et egalement voir les valeurs de ton B que tu veux persister? c'est possible qu'il y'ait peut être un héritage entre A et B.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Par défaut
    Merci de vos réponses

    voici le mapping de la table A suivi du mapping de la table B

    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
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping >
        <class name="com.hibernate.TableA" table="TableA"  >
     
            <id name="idtablea" type="long">
                <column name="IDTABLEA" precision="11" scale="0" />
                <generator class="sequence">
      			<param name="sequence">seq_tablea</param>
            	</generator>
     
            </id>
            <many-to-one name="table1" class="com.hibernate.table1" >
     
                <column name="FKIDTABLE1" precision="11" scale="0" />
            </many-to-one>
            <property name="typetablea" type="string" >
     
                <column name="TYPETABLEA" length="510" />
            </property>
            <property name="numtablea" type="string" >
     
                <column name="NUMTABLEA" length="510" />
            </property>
            <property name="datetablea" type="java.util.Date" >
     
                <column name="DATETABLEA" />
            </property>
            <property name="numctablea" type="java.lang.Long" >
     
                <column name="NUMCTABLEA" precision="11" scale="0" />
            </property>
            <set name="tableb" table="TABLEB" inverse="true" lazy="false" fetch="join" >
     
                <key >
     
                    <column name="FKIDTABLEA" precision="11" scale="0"  />
                </key>
                <one-to-many class="com.hibernate.TableB"  />
            </set>
            <set name="tablec" table="TABLEC" inverse="true" lazy="false" fetch="join" >
     
                <key >
     
                    <column name="FKIDTABLEA" precision="11" scale="0" />
                </key>
                <one-to-many class="com.hibernate.TABLEC"  /> 
     
            </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
    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
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping >
        <class name="com.hibernate.Tableb" table="TABLEB" >
     
            <id name="idtableb" type="long">
                <column name="IDTABLEB" precision="11" scale="0" />
                <generator class="sequence">
      				<param name="sequence">seq_tableb</param> 
      			</generator>
     
            </id>
            <many-to-one name="tablea" class="com.hibernate.Tablea">
     
                <column name="FKIDTABLEA" precision="11" scale="0" />
            </many-to-one>
            <property name="codetableb" type="string" >
     
                <column name="CODETABLEB" length="510" />
            </property>
            <property name="codeptableb" type="string" >
     
                <column name="CODEPTABLEB" length="510" />
            </property>
            <property name="prtableb" type="big_decimal" >
     
                <column name="PRTABLEB" precision="22" scale="0" />
            </property>
            <set name="tableD" table="TABLED"  inverse="true" lazy="false" fetch="join" >
     
                <key >
     
                    <column name="FKIDTABLEB" precision="11" scale="0" />
                </key>
                <one-to-many class="com.hibernate.Tabled"  /> 
     
            </set>
        </class>
    </hibernate-mapping>
    Mon problème n'est pas juste un commit à deux niveaux, il y a 5 niveaux.
    Si vous voulez d autre renseignement
    Merci d'avance

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Par défaut
    Je voudrais ajouter que même l'ajout de cascade="save-update" ne change rien.

    Voici la facon de sauvegarde mes données

    TableA newTableA = new TableB(param1, .....) ;

    session.save(newTableA);

    ...

    TableB newTableB = new TableB(param1, newTableA, ...);

    session.save(newTableB);

    Au moment du commit(), j'ai bien une requete Insert pour la tableA d'abord et puis un insert pour la tableB ( et c'est la qu'il y a une erreur )

    Quand je l'ai dit dans le post précédent, il y a 5 niveaux.

    J'ai déjà essayé aussi de mettre de insert="false" dans le mapping many to one et l'insertion se fait correctement. Si toutes ses informations peuvent vous donner des indices.

    Merci

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Par défaut
    Problème résolu... cétait effectivement un problème de trigger comme sur l'ancien sujet dont j'ai mis le lien dans le premier post

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

Discussions similaires

  1. [Conception]Problème d'intégrité référentielle
    Par golnok dans le forum Modélisation
    Réponses: 2
    Dernier message: 17/04/2007, 15h07
  2. Problème d'intégrité référentielles
    Par Fonzy007 dans le forum Requêtes
    Réponses: 4
    Dernier message: 21/08/2006, 11h38
  3. [Access 2003]Problème d'intégrité reférentielle?
    Par steeves5 dans le forum Access
    Réponses: 2
    Dernier message: 12/06/2006, 09h38
  4. [installeur] [nsis] problème d'intégrité
    Par gorgonite dans le forum Windows
    Réponses: 6
    Dernier message: 28/05/2006, 13h41
  5. Problème d'intégrité référentielle
    Par guiguikawa dans le forum Access
    Réponses: 15
    Dernier message: 23/05/2006, 15h25

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