【发布时间】:2015-04-02 23:13:09
【问题描述】:
我希望在 Spring Boot 中使用 @Transactional,但经过几次尝试后,尽管内部有异常回滚,但我无法让事务正常工作,所以我错过了什么?
AppConfig.java
@EnableAutoConfiguration
@ComponentScan(basePackages = { "com.geopro" })
@EnableJpaRepositories(basePackages = { "com.geopro.repositories" })
@EntityScan(basePackages = { "com.geopro.entities" })
@EnableTransactionManagement
public class AppConfig {
@Bean
public HibernateJpaSessionFactoryBean sessionFactory(EntityManagerFactory emf) {
HibernateJpaSessionFactoryBean factory = new HibernateJpaSessionFactoryBean();
factory.setEntityManagerFactory(emf);
return factory;
}
}
Metier.java
@Service("metier")
@Aspect
public class Metier {
@Transactional(readOnly = false , rollbackFor = Exception.class)
public void saveUpload(UploadData post) throws Exception {
try {
post.ADDEDDATA.savesync();
post.UPDATEDDATA.savesync();
} catch (Exception e) {
throw e ;
}
}
【问题讨论】:
-
“尽管内部有异常要回滚”——当然,如果发生异常,事务将回滚
-
在我的情况下它不会回滚。
-
没什么好说的,也许你可以分享一个项目来证明这个问题。由于您的
Metier服务没有实现接口,我想知道您是否需要@EnableTransactionManagement(proxyTargetClass=true)? -
@PhilWebb 你的把戏很完美,你救了我:D
标签: java spring hibernate transactions spring-boot