I have some troubles with transaction, my environnement is Hibernate / MySql and I use declarative transaction (PROPAGATION_REQUIRED) on my manager. Here a method on my manager, personne have a relation many-to-one with adresse, the cascade is all. if an exception is throwed during personne save, the adresse is not deleted.
I use org.springframework.orm.hibernate.HibernateTransac tionManager as transaction manager.Code:public void save(Personne personne) throws ManagerException { Adresse adresse = adresseDao.findByAdresse(personne.getAdresse()); if(adresse != null) { personne.setAdresse(adresse); } personneDao.save(personne); >> Exception throwed here (duplicate key for my junit tests) }
By the way, I use also AOP to manage SQL exception so my manager declaration is like this :
Any ideas ?Code:<bean id="personneManagerTarget" class="com.euroflash.gestion.manager.impl.hbm.PersonneManagerImpl"> <property name="personneDao"> <ref bean="personneDao"/> </property> <property name="adresseDao"> <ref bean="adresseDao"/> </property> </bean> <bean id="personneManagerHbm" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref bean="transactionManager"/> </property> <property name="target"> <ref bean="personneManagerTarget"/> </property> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <bean id="personneManager" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces"> <value>com.euroflash.gestion.manager.PersonneManager</value> </property> <property name="target"> <ref local="personneManagerHbm"/> </property> <property name="interceptorNames"> <list> <value>exceptionManager</value> </list> </property> </bean>


Reply With Quote