Bonjour,

Souhaitant gérer les transactions Hibernate grâce à Spring via un TransactionProxyFactoryBean, je bute sur un problème.

Lorsque je souhaite acquérir mon objet de la couche coordination qui est pris en charge par TransactionProxyFactoryBean. cf ci dessous

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
E01ListeSalarieSrv lSrv = (E01ListeSalarieSrv)ApplicationContextHolder.getContext().getBean("E01ListeSalarieSrv");
Une "java.lang.ClassCastException: $Proxy0" est levée.

E01ListeSalarieSrv est l'interface de mon service de coordination (classe abstraite).
E01ListeSalarieSrvImpl est l'implémentation, c'est ce que je suis censé récupérer.

Voici la déclaration de mon bean transactionnel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<bean id="E01ListeSalarieSrv" parent="baseTransactionProxy" >
	<property name="target">
		<bean name="E01ListeSalarieSrvTransactionTarget" class="com.renaud.salarie.presentation.web.coordination.E01.impl.E01ListeSalarieSrvImpl" />
	</property>
</bean>
Voici mon springHibernate.xml
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
 
<beans>
	<!--  Déclaration de la DATASOURCES -->
 
	<bean id="datasource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="${db.driver}" />
		<property name="url" value="${db.url}" />
		<property name="username" value="${db.username}" />
		<property name="password" value="${db.password}" />
	</bean>
 
	<!--  Déclaration Session Factory -->
 
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource" ref="datasource" />
		<property name="mappingResources">
			<list>
				<value>hibernate/mapping.hbm.xml</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.connection.pool_size">1</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
				<prop key="hibernate.show_sql">${db.show_sql}</prop>
 
			</props>
		</property>
	</bean>
 
	<!-- Hibernate Transaction Manager Definition -->
 
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
 
 
	<!-- bean de base pour les transactions -->
	<bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
		<property name="transactionManager" ref="transactionManager" />
		<property name="transactionAttributes">
			<props>
				<prop key="insert*">PROPAGATION_REQUIRED</prop>
				<prop key="update*">PROPAGATION_REQUIRED</prop>
				<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="*">PROPAGATION_REQUIRED</prop>
			</props>
		</property>
	</bean>
 
</beans>
J'ai farfouillé partout sur le net mais je ne trouve pas de solution. Merci d'avance !!