Bonjour,

J'ai un problème pour désactiver le rollback automatique de spring dans une transaction. En fait dès que j'ai une exception de levée il me fait un rollback automatique et justement pour cette exception je voudrais gérer moi même la procédure à suivre et non effectuer un rollback.

Quelqu'un aurait une idée sur la façon de procéder ?

J'ai tenté l'interception comme ceci, mais ça ne fonctionne pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<aop:config>
		<aop:pointcut id="noTxServiceOperation" expression="@annotation(org.springframework.transaction.annotation.Transactional)" />
		<aop:advisor pointcut-ref="noTxServiceOperation" advice-ref="txAdvice"/>
	</aop:config>
 
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="find*" read-only="true" />
			<tx:method name="findValidLogin" no-rollback-for="javax.persistence.EntityExistsException"/>
			<tx:method name="*" />
		</tx:attributes>
	</tx:advice>
Et voici l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Exception in thread "main" org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly
	at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:465)
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:709)
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:678)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
	at $Proxy63.findValidLogin(Unknown Source)
	at org.esco.sarapis.db.domain.gestion.impl.InsertManagerImpl.main(InsertManagerImpl.java:116)
Caused by: javax.persistence.RollbackException: Transaction marked as rollbackOnly
	at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:51)
	at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:456)
	... 8 more