Bonjour,
J'ai une fonction de mon appli qui appelle une procédure stockée.
Dans certains cas, si je lance cela tel quel, j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } }
Alors que si j'ajoute un petit sleep avant dbConnection.close(), ça passe!JPA transaction unexpectedly rolled back (maybe marked rollback-only after a failed operation); nested exception is javax.persistence.RollbackException: Error while commiting the transaction
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/
Partager