0
Мой конфигурационный код здесь:метод Java Spring @Transactional не откате, когда бросить исключение
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@PropertySource(value="classpath:datasource.properties")
public class DataSourceConfig {
@Autowired private Environment env;
@Bean(destroyMethod="close")
public BasicDataSource dataSource() {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(env.getProperty("db.driverClass"));
ds.setUrl(env.getProperty("db.url"));
ds.setUsername(env.getProperty("db.username"));
ds.setPassword(env.getProperty("db.password"));
ds.setInitialSize(Integer.valueOf(env.getProperty("db.initialSize")));
return ds;
}
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
@Transactional метод:
@Override
@Transactional
public void create(String orderid, String type, String userid,
String comment) throws Exception {
log.info("### orderid={}, type={}, userid={}, comment={}",
orderid, type, userid, comment);
OrderActivity orderActivity = new OrderActivity();
orderActivity.setActivityid(SeqUtil.produceOrderActivityid());
orderActivity.setComment(comment);
orderActivity.setOperator(userid);
orderActivity.setOrderid(orderid);
orderActivity.setType(type);
orderactivityDao.insert(orderActivity);
//FIXME just for test
if(OrderConstant.ACTIVITY_CANCEL.equals(type)){
throw new RuntimeException();
}
log.info("###orderActivity=[{}]", orderActivity);
}
В методе создания, когда типа является ACTIVITY_CANCEL, затем выполните исключение. Но эта деятельность также будет вставлена в базу данных, а не откат. Зачем?
База данных postgres – user3871134
Вы проверили, что ваш «orderactivityDao» не имеет принудительного фиксации в методе вставки? – Samurai
попробуйте добавить @ComponentScan ("com.yourtxpkg") в DataSourceConfig – Persia