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 :

Pb Transaction sur ConstraintViolationException


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Points : 15
    Points
    15
    Par défaut Pb Transaction sur ConstraintViolationException
    Bonjour,

    Je tente de faire une insertion d'un element dans une table dépendant d'une table pére( contrainte foreign key).
    Pour des raisons particulières je n'ai pas mapper cette relation dans les fichiers de config.

    Je fais donc appel à une "named query" qui remplie la table parent puis je sauvegarde mon objet, le tout dans une transaction.
    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
     
    Session session = null;
    Transaction tx = null;
    try {
        session = factory.openSession();
        tx = session.beginTransaction();
     
        MyObjet myObjet = new MyObjet();
     
        /* Etape 1 */
        Query query = session.getNamedQuery("test");
        query.setString("id", "TEST_001");
        query.executeUpdate(); //OK pas d'erreur
     
        /* Etape 2 */
        session.save(critere);// erreur : org.hibernate.exception.ConstraintViolationException
     
        tx.commit();
     
    } catch (Exception e) {
        if (tx != null) tx.rollback();
        e.printStackTrace();
     
    } finally {
        session.close();
    }
    Je suis en JDBC direct sans JTA.

    Etant en théorie dans la même transaction ca ne devrait pas poser de problème, mais j'ai le message suivant :
    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
     
    Hibernate: INSERT INTO TAB1 (ID_TAB1,TYPE) 
    		VALUES(?,'XXX')
    numLineChanged : 1
    Hibernate: insert into TAB2 (COL1, COL2, ID_TAB1) values (?, ?, ?)
    org.hibernate.util.JDBCExceptionReporter logExceptions
    ATTENTION: SQL Error: 2291, SQLState: 23000
    org.hibernate.util.JDBCExceptionReporter logExceptions
    GRAVE: ORA-02291: violation de contrainte d'integrite (TEST.FK_LIEN_TAB2_TAB1) - cle parent introuvable
     
    org.hibernate.event.def.AbstractFlushingEventListener performExecutions
    GRAVE: Could not synchronize database state with session
    org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
    	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
    	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:249)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
    	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
    	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
    	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
    	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
    	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
        ...
    Caused by: java.sql.BatchUpdateException: ORA-02291: violation de contrainte d'integrite (TEST.FK_LIEN_TAB2_TAB1) - cle parent introuvable
     
    	at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
    	at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10720)
    	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
    	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242)
    	... 9 more
    Help!

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    C'est bon j'ai trouvé, aprés avoir joué avec les flush je me suis apercu que c'était une simple erreur d'attribution d'id dans le code java.
    Comment perdre 2h pour rien...

    Désolé, fausse alerte.

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

Discussions similaires

  1. [Linq to SQL] Transactions sur plusieurs DataContext
    Par anthyme dans le forum Accès aux données
    Réponses: 2
    Dernier message: 03/06/2008, 14h58
  2. suppression des fichiers de transactions sur exchange 2003
    Par rajaa.at dans le forum Exchange Server
    Réponses: 0
    Dernier message: 01/08/2007, 11h40
  3. [VB.NET] Transaction sur plusieurs DB
    Par olbi dans le forum VB.NET
    Réponses: 5
    Dernier message: 11/05/2007, 08h23
  4. [WD11] Transactions sur Accès natif Oracle
    Par AnneC dans le forum WinDev
    Réponses: 4
    Dernier message: 18/04/2007, 15h03
  5. [Global temporary]Transaction sur table temporaire
    Par tanatiel dans le forum Oracle
    Réponses: 9
    Dernier message: 12/10/2005, 16h38

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