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

JPA Java Discussion :

Rollback ne fonctionne pas


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Par défaut Rollback ne fonctionne pas
    Bonjour,

    J'ai un problème de rollback dans mon projet. Je tente de supprimer une ligne d'une table avec la méthode em.remove().

    Quand la suppression est impossible à cause par exemple d'une contrainte de clé étrangère j'aimerais afficher un message à l'utilisateur pour lui signaler.

    Le problème est que le rollback ne fonctionne pas. En effet j'ai une entity "Interne" qui hérite de "Intervenant". L'héritage est de type "joined". Quand une erreur survient pendant la suppression la ligne de la table interne est quand même supprimer.

    Voila ma méthode qui supprime les intervenants :

    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
     
    public void supprimer(List<Intervenant> listeInter) throws SQLIntegrityConstraintViolationException{
            EntityManager em = emf.createEntityManager();
            EntityTransaction tx = null;
            try {
                tx = em.getTransaction();
                tx.begin();
                for (Intervenant intervenant : listeInter) {
                    em.remove(em.merge(intervenant));
                }
                tx.commit();
            }catch(Exception e){
                if(tx != null && tx.isActive()) tx.rollback();
                e.printStackTrace();
                if(e.getCause().getCause() instanceof SQLIntegrityConstraintViolationException)
                    throw new SQLIntegrityConstraintViolationException();
                tx.rollback();
            } finally {
                em.close();
            }
    Ma source de donnée dans le persistence.xml est déclaré ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <persistence-unit name="IntranetJPA" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <non-jta-data-source>jdbc/MySQL</non-jta-data-source>
         ...
    </persistence-unit>
    J'utilise glassfish et Mysql dans leurs dernières versions. Une idée d'ou peut venir le problème.

    Merci d'avance pour vos réponses.

  2. #2
    Membre actif
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Par défaut
    J'ai trouvé la source de mon erreur !

    Premièrement dans mon persistence.xml l'attribut version était à 1.0 au lieu de 2.0 mais je pense pas que c'est ça qui bloquait.

    La vrai erreur est lié à une erreur (bête) de configuration avec mon pool de connection. J'avais sélectionné la case non-transactionnal dans la config de ce dernier pensant que c'est ce qu'il fallait faire dans le cas d'une "non-jta-data-source". Je n'avais pas bien saisie ce que voulait dire jta et non jta.

    Voilà si ça peut aider quelqu'un d'autre on ne sait jamais...

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

Discussions similaires

  1. [Data] [HIBERNATE] Le rollback ne fonctionne pas
    Par verbose dans le forum Spring
    Réponses: 3
    Dernier message: 24/04/2014, 23h48
  2. Access 2000 BeginTrans/Rollback ne fonctionne pas
    Par olivier] dans le forum VBA Access
    Réponses: 1
    Dernier message: 01/02/2013, 17h24
  3. [Data] [Transaction] @Transactional - le rollback ne fonctionne pas
    Par romaintaz dans le forum Spring
    Réponses: 6
    Dernier message: 11/10/2009, 18h23
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 17h48
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 01h10

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