Je travaille avec Spring2 et Hibernate3.2, j'essaye de gerer les transaction au niveau service, mais ceci ne semble pas fonctionner.
En tout cas, quand une exception est levée, aucun rollback n'est executé.
Voici mon fichier de configuration :
Je provoque l'exception NomExistantException qui est bien levée, mais les opérations précédentes ont été comitées quand même.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <!-- BEANS DAOS --> <bean id="livreDao" class="fr.tigf.sbt.dao.hibernate.LivreDao" > <property name="hibernateTemplate"> <ref bean="hibernateTemplate" /> </property> </bean> <!-- BEANS SERVICES --> <bean id="biblioService" class="fr.tigf.sbt.service.impl.BiblioService"> <property name="livreDao" ref="livreDao" /> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@10.33.31.147:1521:AAA" /> <property name="username" value="XXX" /> <property name="password" value="XXXX" /> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> <property name="mappingResources"> <list> <value>mapping/Livre.hbm.xml</value> </list> </property> </bean> <!-- Hibernate Template Defintion --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> <property name="jdbcExceptionTranslator"> <ref bean="jdbcExceptionTranslator" /> </property> </bean> <!-- Spring Data Access Exception Translator Definition --> <bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator"> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> <!-- Gestionnaire de transaction. --> <bean id="serviceManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <!-- Service avec support de transaction --> <bean name="interceptorService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref local="serviceManager" /> </property> <property name="target"> <ref local="biblioService" /> </property> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED, -fr.tigf.sbt.service.exception.NomExistantException </prop> </props> </property> </bean> </beans>
Il semblrait donc que mon service n'est pas interceptépar mon proxy.
Si vous avez des idées, je suis preneur.
Partager