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 :

insertion invonlontaire de Foreign Keys


Sujet :

Hibernate Java

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Par défaut insertion invonlontaire de Foreign Keys
    Bonjour,

    Alors voila, j'ai un petit probleme avec Hibernate Synchronizer

    Je m'explique : il y a certaine tables dans ma base de données qui sont bien mappées et qui sont un peu complexe (présence d'héritage et de composition), lorsque je veux effectuer n'importe quel traitement (select, insert..) la-dessus à partir de l'application avec Hibernate ( de Eclipse et non du manager de BD), alors il me crée de nouvelles Foreign Keys sur des champs de la table, donc en fin de compte j'aurais dans ma tables un champ avec deux ou 3 foreign keys, qui parfois s'auto référentient !!!!!

    Je vous poste le code SQL de la table avant et après la requête (même un select HQL)

    Avant :
    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
    CREATE TABLE `feature` (
      `ID_ART` bigint(20) NOT NULL,
      `FEA_ID_ART` bigint(20) default NULL,
      `ID_PROD` bigint(20) default NULL,
      `NOM_ART` varchar(20) default NULL,
      `VER_ART` longtext,
      `STATUT_ART` longtext,
      `DESCRIPTION_ART` text,
      `PRIORITE_FEAT` varchar(10) default NULL,
      `DETAILS_FEAT` text,
      PRIMARY KEY  (`ID_ART`),
      KEY `COMPOSE_FEAT_FK` (`FEA_ID_ART`),
      CONSTRAINT `FK_COMPOSE_FEAT` FOREIGN KEY (`FEA_ID_ART`) REFERENCES `feature` (`ID_ART`),
      CONSTRAINT `FK_HERITAGE_1` FOREIGN KEY (`ID_ART`) REFERENCES `artifact` (`ID_ART`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    Apres :

    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
    CREATE TABLE `feature` (
      `ID_ART` bigint(20) NOT NULL,
      `FEA_ID_ART` bigint(20) default NULL,
      `ID_PROD` bigint(20) default NULL,
      `NOM_ART` varchar(20) default NULL,
      `VER_ART` longtext,
      `STATUT_ART` longtext,
      `DESCRIPTION_ART` text,
      `PRIORITE_FEAT` varchar(10) default NULL,
      `DETAILS_FEAT` text,
      PRIMARY KEY  (`ID_ART`),
      KEY `COMPOSE_FEAT_FK` (`FEA_ID_ART`),
      KEY `FKC5A27AF69E837999` (`ID_ART`),
      KEY `FKC5A27AF65060162D` (`ID_ART`),
      KEY `FKC5A27AF6708854F6` (`FEA_ID_ART`),
      CONSTRAINT `FKC5A27AF6708854F6` FOREIGN KEY (`FEA_ID_ART`) REFERENCES `feature` (`ID_ART`),
      CONSTRAINT `FKC5A27AF65060162D` FOREIGN KEY (`ID_ART`) REFERENCES `artifact` (`ID_ART`),
      CONSTRAINT `FKC5A27AF69E837999` FOREIGN KEY (`ID_ART`) REFERENCES `feature` (`ID_ART`),
      CONSTRAINT `FK_COMPOSE_FEAT` FOREIGN KEY (`FEA_ID_ART`) REFERENCES `feature` (`ID_ART`),
      CONSTRAINT `FK_HERITAGE_1` FOREIGN KEY (`ID_ART`) REFERENCES `artifact` (`ID_ART`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    Remarquez la présence des nouvelels Foreign Keys (avec la suite de Chiffres)

    ca mempeche alors d'effectuer d'autres traitements essentiellement les insertions...

    est ce que quelqu'un as déja rencontré ce cas de figure ? je travaille avec Hibernate Synchronizer...


    Je vous remercie pour votre aide

    Cordialement,

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Par défaut
    Rebonjour tt le monde,

    Enfin j'ai trouvé la solution à mon problème, je vous la poste en espérant aider ceux qui rencontreront cette erreur

    En effet, il y avait une ligne de code qui demandait à Hibernate de faire ces changements à chaque fois que me connectais à la base

    Alors voila, la cause du problème venait en fait du fichier de configuration de Hibernate (hibernate.cfg.xml) :

    la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <property name="hbm2ddl.auto">update</property>
    faisait qu'à chaque fois qu'on se connecte à la base, Hibernate éxecute de nouveau des requêtes DDL pour gérer les liens de dépendance des différentes FK et liens d'héritage de nouveau, c'est ce qui fait qu'on a ces FK dupliquées sur la même colonne

    Alors la solution serait bien évidemment d'enlever cette ligne de code du fichier "hibernate.cfg.xml"

    J'espère que je vous ai éclairci la situation

    Salut !

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

Discussions similaires

  1. probleme d'insertion avec des foreign key
    Par bssouf21 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/02/2012, 13h03
  2. Problème de Foreign Key pour insertion dans ma table de faits
    Par arno974 dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 10/05/2010, 13h54
  3. [SQL-Server] insert into d'une table reliant deux tables(foreign key)
    Par evra76 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/07/2009, 10h38
  4. The INSERT statement conflicted with the FOREIGN KEY
    Par hajarussa dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/06/2009, 16h17
  5. Réponses: 6
    Dernier message: 14/05/2009, 11h01

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