Config.xmlSpring сделка не откатить исключением
<bean id="emfactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="persistenceUnitName" ref="default"/>
<property name="jpaVendorAdaptor">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdaptor"/>
</property>
<property name="jpaProperties">
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">com.xxx.xxx.xxx.xxx.SQLServer2012CustomDialect</prop>
</property>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="emfactory"/>
</bean>
Service.java
@Transactional
public void save(Dto dto) throws Exception{
dao.save(entity);
throw new Exception();
}
Моя проблема в том, что это исключение не откатить транзакцию. Я много искал и обнаружил, что транзакция с возвратом пружины по умолчанию для исключений во время выполнения/непроверенных по умолчанию. Я попробовал следующее:
@Transactional
public void save(Dto dto) throws Exception{
dao.save(entity);
throw new RunTimeException();
}
Это прекрасно работает, но это не всегда код, который везде исключает исключение во время выполнения. Итак, я выкапываю и обнаружил rollbackFor как следующее;
@Transactional(rollbackFor = Exception.class)
public void save(Dto dto) throws Exception{
dao.save(entity);
throw new Exception();
}
Теперь я должен изменить все свои коды, чтобы изменить @Transactional с rollbackFor. Но любой другой способ изменить все свойства @Transaction advice для rollbackFor = Exception.class?
dao.save (entity); Является ли ваш класс дао обозначенным как транзакционный? –
Да. В некоторых местах. – Esty
@NiravShah, уточните пожалуйста. с транзакцией в DAO.save его workinh отлично сейчас, если я сделаю свой сервис, сохраните транзакцию для rollbackFor Exception.class. – Esty