Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/12/2010, 16h51   #1
Membre habitué
 
Inscription : décembre 2004
Messages : 643
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 643
Points : 104
Points : 104
Par défaut JPA transaction unexpectedly rolled back

Bonjour,

J'ai une fonction de mon appli qui appelle une procédure stockée.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Connection dbConnection = null;
dbConnection = ds.getConnection();
Statement sql = dbConnection.createStatement();
StringBuffer sqlstr = new StringBuffer("call MA_PROC(xxxxxx)");
try {
      sql.executeUpdate(sqlstr.toString());
      dbConnection.commit();
} catch (Exception e) {
       throw new Exception(e.getMessage() + "|" + sqlstr.toString());
}finally{
      if (dbConnection != null) {
            dbConnection.close();
      }
}
Dans certains cas, si je lance cela tel quel, j'ai :
Citation:
JPA transaction unexpectedly rolled back (maybe marked rollback-only after a failed operation); nested exception is javax.persistence.RollbackException: Error while commiting the transaction
Alors que si j'ajoute un petit sleep avant dbConnection.close(), ça passe!
Note :
sans sleep : 100% d'échec
avec sleep(100) 50% de réussite
avec sleep(1000) 100% de réussite

Alors dans la console ça me parle d'une Primary Key violated mais ça n'a pas de sens : même causes, mêmes effets alors si les paramètres passés à la proc restent les mêmes, aucune raison d'avoir des PK violated que dans le cas où on n'a pas mis la rustine "sleep"...

Pour info, j'ai trouvé ce post...mais ça m'aide pas trop :
http://www.developpez.net/forums/d90...ing-hibernate/
stof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 12h02   #2
Membre habitué
 
Inscription : décembre 2004
Messages : 643
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 643
Points : 104
Points : 104
Ca n'inspire pas grand monde... en fait il semblerait qu'on demande donc de fermer la connection alors que la procédure stockée MA_PROC(xxxxxx) est toujours en train de travailler.

Le problème c'est que la fonction executeUpdate ne sait pas quand la procédure a fini de travailler.

Des idées?
stof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2010, 14h03   #3
Expert Confirmé Sénior
 
Homme Laurent Willems
Expert Stop/Start
Inscription : septembre 2002
Messages : 2 544
Détails du profil
Informations personnelles :
Nom : Homme Laurent Willems
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Expert Stop/Start

Informations forums :
Inscription : septembre 2002
Messages : 2 544
Points : 4 249
Points : 4 249
JPA = Java Persistence API.

Ce post n'a donc rien à voir avec PHP. Tu as auras certainement plus de chance d'avoir un réponse en postant dans le forum JPA.

http://www.developpez.net/forums/f73...rsistance/jpa/
__________________
Alea Jacta Test!
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h11.


 
 
 
 
Partenaires

Hébergement Web