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 :

Probleme relation many-to-one lors de suppresion en cascade


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Par défaut Probleme relation many-to-one lors de suppresion en cascade
    bonjour j'ai un probleme,
    j'ai deux entités Contenu et Etat_Contenu.
    A la relation suivant :
    un Contenu peut avoir 0 ou n états
    un Etat_Contenu est relatif à un seul Contenu.
    Navigabilité que dans un sens un Etat_Contenu connait son Contenu
    J'ai donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    moncontenu  (type Contenu)
    monetat (type EtatContenu)
     
    monetat.Contenu = moncontenu;
    Mais quand je supprime mon Contenu j'ai une erreur si un Etat_Contenu s'y refere.

    ERROR NHibernate.Util.ADOExceptionReporter NHibernate.Util.ADOExceptionReporter - L'instruction DELETE est en conflit avec la contrainte REFERENCE 'ETAT_CONTENU_CONTENU_FKC'. Le conflit s'est produit dans la base de données 'xxxxx', table 'xxxxx.ETAT_CONTENU', column 'CONTENU_FK'.
    Je suis preneur de toutes bonnes idées. Ma relation n'est pas bi-directionnel car un Contenu peut avoir plusieurs milliers d'états.

    Je vous joins mes mappings

    Code:
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <hibernate-mapping
        xmlns="urn:nhibernate-mapping-2.2"
        default-cascade="none">
     
        <class
            name="Entites.Structures.Contenu, Core"
            table="CONTENU"
            dynamic-insert="false"
            dynamic-update="false"
            lazy="true">
     
            <cache usage="read-write" />
            <id name="Id" type="Int64" unsaved-value="null">
                <column name="ID" sql-type="BIGINT"/>
                <generator class="assigned">
                </generator>
            </id>
     
            ………….
     
        </class>
    </hibernate-mapping>


    Code:

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <hibernate-mapping
        xmlns="urn:nhibernate-mapping-2.2"
        default-cascade="none">
     
        <class
            name="Entites.Suivis.EtatContenu, Core"
            table="ETAT_CONTENU"
            dynamic-insert="false"
            dynamic-update="false"
            lazy="true">
     
            <cache usage="read-write" />
            <id name="Id" type="Int64" unsaved-value="0">
                <column name="ID" sql-type="BIGINT"/>
                <generator class="native">
                </generator>
            </id>
    ……….
     
            <many-to-one name="Contenu" class="Entites.Structures.Contenu, Core" outer-join="auto" foreign-key="ETAT_CONTENU_CONTENU_FKC">
                <column name="CONTENU_FK" not-null="true" sql-type="BIGINT"/>
            </many-to-one>
     
        </class>
    </hibernate-mapping>

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Par défaut
    Il semble que si je rends la relation bi-directionnelle, avec delete-cascade-orphan cela marche bien.
    Mais j'aurais preferé une autre option pour resoudre mon probleme même si je mets ma relation en lazy. Je mets en bidirectionnel uniquement pour la suppresion ce n'est pas top.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Par défaut
    la solution est donc:
    - soit de la faire à la mano
    - soit rendre la relation bi-directionnelle, avec delete-cascade-orphan et en lazy vu que la 'bi-directionalité' est utilsé uniquement pour le delete cascade

    j'ai opté pour la 1 car en fait on a toujours des regles metiers à ajouter lorsque l'on veut faire un delete en cascade.

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

Discussions similaires

  1. relation many-to-one avec clefs composites
    Par Foub dans le forum Hibernate
    Réponses: 2
    Dernier message: 27/09/2007, 14h33
  2. relation many to one
    Par CPI_en_mousse dans le forum Hibernate
    Réponses: 4
    Dernier message: 01/06/2007, 14h09
  3. [ASP.NET 2.0] DataBinding et relation Many to one
    Par Mandotnet dans le forum ASP.NET
    Réponses: 1
    Dernier message: 18/01/2007, 13h48
  4. Relation Many-to-One dans une application JSF
    Par KooKoolen dans le forum JSF
    Réponses: 1
    Dernier message: 27/12/2006, 14h13
  5. Hibernate : suppression sur relation many to one
    Par taf dans le forum Hibernate
    Réponses: 1
    Dernier message: 23/05/2006, 13h08

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