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 :

Contrainte d'intégrite Hibernate


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 16
    Par défaut Contrainte d'intégrite Hibernate
    Bonjour,
    Voila mon problème, j'ai 2 tables Lot et Fonction avec l'id du lot en foreignKey dans la table fonction.

    Au niveau des Entités j'ai tout bien déclaré avec dans la classe Lot
    @OneToMany(mappedBy = "lot", cascade = { CascadeType.REMOVE })
    private Set<Fonction> fonctions = new HashSet<Fonction>();
    Quand je créé un lot puis une fonction, et que je cherche a supprimer ce lot assez rapidement j'ai une erreur de contrainte d'intégrité qui est lancé. Car Hibernate lance les requêtes suivantes :
    select projet0_.PRO_ID as PRO1_0_, projet0_.PRO_VERSION as PRO2_0_, projet0_.PRO_NOM as PRO3_0_ from T_PROJET_PRO projet0_ order by projet0_.PRO_NOM
    2008-08-29 11:29:19 959 DEBUG - update T_LOT_LOT set LOT_VERSION=?, LOT_NOM=?, PRO_ID=? where LOT_ID=? and LOT_VERSION=?
    2008-08-29 11:29:19 997 DEBUG - delete from T_LOT_LOT where LOT_ID=? and LOT_VERSION=?
    Par contre si j'attends un certain temps, la suppression du lot se fait correctement car Hibernate lance les requêtes suivantes :
    select fonctions0_.LOT_ID as LOT4_1_, fonctions0_.FCT_ID as FCT1_1_, fonctions0_.FCT_ID as FCT1_9_0_, fonctions0_.FCT_VERSION as FCT2_9_0_, fonctions0_.FCT_NOM as FCT3_9_0_, fonctions0_.LOT_ID as LOT4_9_0_ from T_FONCTION_FCT fonctions0_ where fonctions0_.LOT_ID=?
    2008-08-29 11:32:50 715 DEBUG - select ftc0_.FCT_ID as FCT2_3_, ftc0_.TYP_ID as TYP1_3_, ftc0_.CPX_ID as CPX3_3_, ftc0_.TYP_ID as TYP1_2_2_, ftc0_.FCT_ID as FCT2_2_2_, ftc0_.CPX_ID as CPX3_2_2_, ftc0_.FTC_NB_JH as FTC4_2_2_, type1_.TYP_ID as TYP1_5_0_, type1_.TYP_VERSION as TYP2_5_0_, type1_.TYP_NOM as TYP3_5_0_, complexite2_.CPX_ID as CPX1_7_1_, complexite2_.CPX_VERSION as CPX2_7_1_, complexite2_.CPX_NOM as CPX3_7_1_ from TJ_FCT_TYP_CPX_FTC ftc0_ left outer join T_TYPE_TYP type1_ on ftc0_.TYP_ID=type1_.TYP_ID left outer join T_COMPLEXITE_CPX complexite2_ on ftc0_.CPX_ID=complexite2_.CPX_ID where ftc0_.FCT_ID=?
    2008-08-29 11:32:50 728 DEBUG - select etapes0_.LOT_ID as LOT2_2_, etapes0_.ETP_ID as ETP1_2_, etapes0_.ETP_ID as ETP1_1_1_, etapes0_.LOT_ID as LOT2_1_1_, etapes0_.JEL_COEF as JEL3_1_1_, etape1_.ETP_ID as ETP1_8_0_, etape1_.ETP_VERSION as ETP2_8_0_, etape1_.ETP_NOM as ETP3_8_0_, etape1_.ETP_POURCENTAGE as ETP4_8_0_, etape1_.PHA_ID as PHA5_8_0_ from TJ_ETP_LOT_JEL etapes0_ left outer join T_ETAPE_ETP etape1_ on etapes0_.ETP_ID=etape1_.ETP_ID where etapes0_.LOT_ID=?
    2008-08-29 11:32:50 730 DEBUG - select ltc0_.LOT_ID as LOT2_3_, ltc0_.TYP_ID as TYP1_3_, ltc0_.CPX_ID as CPX3_3_, ltc0_.TYP_ID as TYP1_10_2_, ltc0_.LOT_ID as LOT2_10_2_, ltc0_.CPX_ID as CPX3_10_2_, ltc0_.LTC_COEF as LTC4_10_2_, type1_.TYP_ID as TYP1_5_0_, type1_.TYP_VERSION as TYP2_5_0_, type1_.TYP_NOM as TYP3_5_0_, complexite2_.CPX_ID as CPX1_7_1_, complexite2_.CPX_VERSION as CPX2_7_1_, complexite2_.CPX_NOM as CPX3_7_1_ from TJ_LOT_TYP_CPX_LTC ltc0_ left outer join T_TYPE_TYP type1_ on ltc0_.TYP_ID=type1_.TYP_ID left outer join T_COMPLEXITE_CPX complexite2_ on ltc0_.CPX_ID=complexite2_.CPX_ID where ltc0_.LOT_ID=?
    2008-08-29 11:32:50 732 DEBUG - update T_LOT_LOT set LOT_VERSION=?, LOT_NOM=?, PRO_ID=? where LOT_ID=? and LOT_VERSION=?
    2008-08-29 11:32:50 734 DEBUG - update T_FONCTION_FCT set FCT_VERSION=?, FCT_NOM=?, LOT_ID=? where FCT_ID=? and FCT_VERSION=?
    2008-08-29 11:32:50 737 DEBUG - delete from T_FONCTION_FCT where FCT_ID=? and FCT_VERSION=?
    2008-08-29 11:32:50 739 DEBUG - delete from T_LOT_LOT where LOT_ID=? and LOT_VERSION=?
    J'aimerai savoir si c'est normal. Et s'il s'agit d'une configuration que j'aurais mal faite quelque part.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Par défaut
    Tu as essayé avec CascadeType.DELETE_ORPHAN ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 16
    Par défaut
    ça signifie quoi "CascadeType.DELETE_ORPHAN" ?

    J'ai essayé mais il ne connait pas. J'ai aussi essayé CascadeType.ALL

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Par défaut
    Ca veut dire qu'il va supprimer les fils si le père est supprimé

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 16
    Par défaut
    En fait, à cette endroit là
    // relation inverse Lot (one) -> Fonction (many)
    @OneToMany(mappedBy = "lot", cascade = { CascadeType.REMOVE })
    private Set<Fonction> fonctions = new HashSet<Fonction>();
    Il veut quelquechose du type javax.persistence

    Or CascadeType.DELETE_ORPHAN est de type org.hibernate.annotations, c'est pourquoi il en veut pas.

    Je ne peux utiliser que
    CascadeType.REMOVE
    CascadeType.REFRESH
    CascadeType.PERSIST
    CascadeType.MERGE
    CascadeType.ALL

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Par défaut
    Tu as essayé avec ça :
    @org.hibernate.annotations.Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)

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

Discussions similaires

  1. Merise : Contrainte d'intégrite fonctionnelle
    Par new_wave dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 22/06/2022, 11h51
  2. contrainte d'intégrité super dur a gérer !
    Par RockLee69 dans le forum Oracle
    Réponses: 3
    Dernier message: 30/11/2005, 15h02
  3. Réponses: 5
    Dernier message: 26/10/2005, 14h43
  4. [debutant] Contraintes d'intégrité définies sur un objet
    Par maysa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/05/2004, 14h57
  5. Question sur les contraintes d'intégrités
    Par eGGyyS dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/04/2004, 13h51

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