Vous n'êtes pas identifié(e).

#1 19/05/2009 11:25:44

Rabbit
Membre

Hibernate

Bonjour à tous,

J'ai actuellement un problème pour faire fonctionner mon application avec hibernate.

lorsque je lance l'appli, je trouve dans le fichier stdout l'erreur suivante:

ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: current transaction is aborted, commands ignored until end of transaction block

Je pense que ça vient de l'autocommit de Postgre mais je n'arrive pas à le désactiver. J'ai lu quelque part que c'était impossible sur les dernières versions...
J'aimerais bien pouvoir faire fonctionner tout ça sans modifier le code de mon appli qui fonctionnait sous Oracle...

Merci par avance de votre aide.

Hors ligne

#2 19/05/2009 11:53:17

flo
Membre

Re : Hibernate

Ne serait-ce pas parce que tu as eu une erreur précédemment dans ta transaction?
Avec Oracle, il me semble que tu peux très bien ignorer une erreur et continuer ta transaction (ce qui est sale, soit dit en passant...). Avec PostgreSQL, non. Il faut donc que tu cherches l'erreur précédente pour connaître la cause de ton problème. Idéalement, il faudrait aussi que tu revoie la gestion des erreurs dans ta transaction...
(il est plus simple de regarder dans la log de PostgreSQL, j'ai déjà eu quelques soucis avec Hibernate, j'ai l'impression qu'il ne reporte pas toujours correctement les erreurs, en plus il est très bavard)
Pour le fait d'être en autocommit ou non, ça doit se régler dans Hibernate.

Hors ligne

#3 19/05/2009 13:34:00

Marc Cousin
Membre

Re : Hibernate

Par ailleurs, vu le message (current transaction is aborted), la session n'est pas en autocommit : ce message n'arrive que dans les transactions manuelles à ma connaissance.


Marc.

Hors ligne

#4 27/05/2009 12:15:46

Rabbit
Membre

Re : Hibernate

Bonjour,

Je n'arrive toujours pas à lancer Hibernate avec PostgreSQL.
Quand je regarde le log de PostgreSQL, j'ai une erreur qui se répète:

%t ERROR:  current transaction is aborted, commands ignored until end of transaction block
%t STATEMENT:  SELECT NULL AS TABLE_CAT, n.nspname AS TABLE_SCHEM, c.relname AS TABLE_NAME,  CASE n.nspname ~ '^pg_' OR n.nspname = 
'information_schema'  WHEN true THEN CASE  WHEN n.nspname = 'pg_catalog' OR n.nspname = 'information_schema' THEN CASE c.relkind   WHEN 'r' THEN 'SYSTEM 
TABLE'   WHEN 'v' THEN 'SYSTEM VIEW'   WHEN 'i' THEN 'SYSTEM INDEX'   ELSE NULL   END  WHEN n.nspname = 'pg_toast' THEN CASE c.relkind   WHEN 'r' THEN 
'SYSTEM TOAST TABLE'   WHEN 'i' THEN 'SYSTEM TOAST INDEX'   ELSE NULL   END  ELSE CASE c.relkind   WHEN 'r' THEN 'TEMPORARY TABLE'   WHEN 'i' THEN 
'TEMPORARY INDEX'   ELSE NULL   END  END  WHEN false THEN CASE c.relkind  WHEN 'r' THEN 'TABLE'  WHEN 'i' THEN 'INDEX'  WHEN 'S' THEN 'SEQUENCE'  WHEN 'v' 
THEN 'VIEW'  ELSE NULL  END  ELSE NULL  END  AS TABLE_TYPE, d.description AS REMARKS  FROM pg_catalog.pg_namespace n, pg_catalog.pg_class c  LEFT JOIN 
pg_catalog.pg_description d ON (c.oid = d.objoid AND d.objsubid = 0)  LEFT JOIN pg_catalog.pg_class dc ON (d.classoid=dc.oid AND dc.relname='pg_class')  LEFT JOIN 
pg_catalog.pg_namespace dn ON (dn.oid=dc.relnamespace AND dn.nspname='pg_catalog')  WHERE c.relnamespace = n.oid  AND c.relname LIKE 'PROBABLYNOT'  
AND (false  OR ( c.relkind = 'r' AND n.nspname !~ '^pg_' AND n.nspname <> 'information_schema' ) )  ORDER BY TABLE_TYPE,TABLE_SCHEM,TABLE_NAME

Je ne sais pas d'où elle provient...

Hors ligne

#5 27/05/2009 14:33:50

flo
Membre

Re : Hibernate

C'est le même problème. Je m'explique : il y a en fait 2 choses dans ton problème :

1 : une première erreur a eu lieu dans la transaction (elle devrait apparaître dans la log). Tu n'as pas fourni cette erreur, donc impossible de t'aider là-dessus...

2 : l'erreur n'est pas gérée, ce qui entraîne les erreurs "current transaction is aborted..."

En cherchant un peu on trouve une explication très simple :
http://archives.postgresql.org/pgsql-ge … g00513.php

Au fait, c'est au démarrage que se produit la série d'erreurs, non?

En conclusion, trouve la toute première erreur et poste-là avec l'ordre SQL qui l'a  causée.

Hors ligne

#6 27/05/2009 14:44:27

Rabbit
Membre

Re : Hibernate

Oui, les erreurs se produisent au démarrage.
Je pense que l'erreur qui fait planter est celle-ci:

%t ERROR:  syntax error at or near "session" at character 7
%t STATEMENT:  alter session set nls_date_format='DD/MM/YYYY'

Hors ligne

#7 27/05/2009 21:37:44

flo
Membre

Re : Hibernate

%t STATEMENT:  alter session set nls_date_format='DD/MM/YYYY'

Ah ça, c'est de l'Oracle pur jus! Ton Hibernate pense avoir affaire à une base Oracle.
Tu devrais sans doute vérifier le paramétrage d'Hibernate.

Hors ligne

#8 28/05/2009 10:55:28

Rabbit
Membre

Re : Hibernate

En fait l'erreur venait de l'application et pas de Hibernate... j'ai corrigé tout ça et l'appli se lance à présent.
Merci pour votre aide!

Hors ligne

Pied de page des forums