Bonjour,

En traçant les requêtes générées par hibernate lors de d’un merge, on s’est rendu compte que lors de l’insertion dans la table, l’identifiant généré par la séquence et qui est passé en paramètre de la requête est différent de celui retourné si on fait une select sur la même table.
En résumé l’identifiant retourné via une select est incrémenté de 1 par rapport a celui inséré lors du merge , on arrive pas à expliquer ce comportement et on sait pas si c’est du a une mauvaise configuration ou un défaillance de Oracle10g.
Pour plus de précision on utilise hibernate 3.2 et spring 2.5 :
Configuration :
[CODE<bean id="transactionProxy" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED, readOnly</prop>
</props>
</property>
</bean> [/CODE]
SQL generées :
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
2010-10-08 15:06:49,458 DEBUG [org.hibernate.SQL] insert into LAKEHAL.PPP_COMPTE_EXTERNE (STATUT_COMPTE_EXTERNE, TYPE_PAGE_CONNECTION, LOGIN, REPONSE, DATE_CREATION_COMPTE, PJ_RIB_FICHIER, PJ_KBIS_FICHIER, SIRET, RAISON_SOCIALE, VOIE_NUMERO, VOIE_NUMERO_CMPLT, VOIE_LIBELLE, VOIE_CMPLT, COMMUNE, CODE_INSEE, CODE_POSTAL, CEDEX_BOOL, CEDEX_LIBELLE, ID_CODE_PROFIL_EXTERNE, ID_CODE_QUESTION_COMPTE, ID_CODE_TYPE_CONTACT, ID_CODE_COMMUNE_AGENCE, ID_CODE_PAYS, ID_COMPTE_EXTERNE) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.BooleanType] binding 'false' to parameter: 1
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.IntegerType] binding '1' to parameter: 2
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.StringType] binding 'myCompte' to parameter: 3
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.StringType] binding '' to parameter: 4
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.DateType] binding '08 octobre 2010' to parameter: 5
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.StringType] binding null to parameter: 6
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.StringType] binding null to parameter: 7
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.StringType] binding '' to parameter: 8
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.StringType] binding '' to parameter: 9
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.StringType] binding '' to parameter: 10
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.StringType] binding '---' to parameter: 11
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.StringType] binding 'sfgdfgf' to parameter: 12
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.StringType] binding '' to parameter: 13
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.StringType] binding '' to parameter: 14
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.StringType] binding null to parameter: 15
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.StringType] binding '' to parameter: 16
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.BooleanType] binding 'false' to parameter: 17
2010-10-08 15:06:49,458 DEBUG [org.hibernate.type.StringType] binding '' to parameter: 18
2010-10-08 15:06:49,459 DEBUG [org.hibernate.type.IntegerType] binding '1' to parameter: 19
2010-10-08 15:06:49,459 DEBUG [org.hibernate.type.IntegerType] binding null to parameter: 20
2010-10-08 15:06:49,459 DEBUG [org.hibernate.type.IntegerType] binding '2' to parameter: 21
2010-10-08 15:06:49,459 DEBUG [org.hibernate.type.IntegerType] binding '34328' to parameter: 22
2010-10-08 15:06:49,459 DEBUG [org.hibernate.type.IntegerType] binding '72' to parameter: 23
2010-10-08 15:06:49,459 DEBUG [org.hibernate.type.IntegerType] binding '1355' to parameter: 24
2010-10-08 15:06:49,565 DEBUG [org.hibernate.SQL] select this_.ID_COMPTE_EXTERNE as ID1_40_0_, this_.STATUT_COMPTE_EXTERNE as STATUT2_40_0_, this_.TYPE_PAGE_CONNECTION as TYPE3_40_0_, this_.LOGIN as LOGIN40_0_, this_.REPONSE as REPONSE40_0_, this_.DATE_CREATION_COMPTE as DATE6_40_0_, this_.PJ_RIB_FICHIER as PJ7_40_0_, this_.PJ_KBIS_FICHIER as PJ8_40_0_, this_.SIRET as SIRET40_0_, this_.RAISON_SOCIALE as RAISON10_40_0_, this_.VOIE_NUMERO as VOIE11_40_0_, this_.VOIE_NUMERO_CMPLT as VOIE12_40_0_, this_.VOIE_LIBELLE as VOIE13_40_0_, this_.VOIE_CMPLT as VOIE14_40_0_, this_.COMMUNE as COMMUNE40_0_, this_.CODE_INSEE as CODE16_40_0_, this_.CODE_POSTAL as CODE17_40_0_, this_.CEDEX_BOOL as CEDEX18_40_0_, this_.CEDEX_LIBELLE as CEDEX19_40_0_, this_.ID_CODE_PROFIL_EXTERNE as ID20_40_0_, this_.ID_CODE_QUESTION_COMPTE as ID21_40_0_, this_.ID_CODE_TYPE_CONTACT as ID22_40_0_, this_.ID_CODE_COMMUNE_AGENCE as ID23_40_0_, this_.ID_CODE_PAYS as ID24_40_0_ from LAKEHAL.PPP_COMPTE_EXTERNE this_ where this_.LOGIN=?
2010-10-08 15:06:49,565 DEBUG [org.hibernate.type.StringType] binding 'myCompte' to parameter: 1
2010-10-08 15:06:49,585 DEBUG [org.hibernate.type.IntegerType] returning '1356' as column: ID1_40_0_