我的@Transactional
方法有問題。執行此方法後 - 新記錄插入到表並沒有回滾發生在異常MyBatis/Spring - 交易方法
@RestController
@RequestMapping("/rest")
public class TestController {
@Autowired
private TestMapper testMapper;
@Transactional
@RequestMapping("/test")
String test() {
TestObj obj = new TestObj();
obj.setName(new Date().toString());
testMapper.insert(obj);
int i = 1/0; // doing exception
return obj.toString();
}
}
我的XML配置:
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/test"/>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.test.mapper"/>
</bean>
我這麼想嗎?我只想DB來保持不變,如果一些例外,在我的方法發生
編輯: 問題是方法沒有定義爲public
更改我的行,拋出異常爲'if(true){throw new RuntimeException(); }'並添加了'rollbackFor = Exception.class',但是這沒有幫助...仍然插入表 – maksim
thx ...的記錄只是缺少'public' for test()方法 – maksim