spring事務不回滾
Spring 1.1.5 + MySql 4.1,採用程式設計型事務,在insertUser方法中執行兩條insert語句,第一條成功執行,第二條丟擲異常,按理說事物應該回滾,把第一條插入的要取消,但開啟資料庫卻發現沒有取消,請各位大蝦看看那裡弄錯了。程式碼如下:
public class UserDAO implements IUserDAO {
private DataSource dataSource;
private DataSourceTransactionManager transactionManager;
public void setDataSource(DataSource dataSource){
this.dataSource = dataSource;
}
public void setTransactionManager(DataSourceTransactionManager transactionManager){
this.transactionManager = transactionManager;
}
public void insertUser() throws DataAccessException{
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
transactionTemplate.execute(new TransactionCallback(){
public Object doInTransaction(TransactionStatus ts){
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource);
jdbcTemplate.execute("Insert into User (FirstName,LastName) values('123','321')");
jdbcTemplate.execute("Insert into User (FirstName1,LastName) values('333','444')");
//表User中無FirstName1自段,人為製造一個異常
return null;
}
});
}
}
執行時,異常如下
org.springframework.jdbc.BadSqlGrammarException: Bad SQL grammar [Insert into User (FirstName1,LastName) values('333','444')] in task 'executing StatementCallback'; nested exception is java.sql.SQLException: Unknown column 'FirstName1' in 'field list'
org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:198)
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:262)
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:283)
com.ce.spring.UserDAO$1.doInTransaction(UserDAO.java:86)
org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:114)
com.ce.spring.UserDAO.insertUser(UserDAO.java:81)
org.apache.jsp.index_jsp._jspService(index_jsp.java:74)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
相關文章
- spring 異常 事物不回滾Spring
- Spring事務回滾情況Spring
- 關於Spring事務回滾的問題Spring
- Spring Transaction詳解 – 手動回滾事務Spring
- Spring Data JPA中事務回滾意外RollbackExceptionSpringException
- SQL Server 事務及回滾事務SQLServer
- Spring事務不能回滾的深層次原因Spring
- Spring中@Transactional事務回滾例項及原始碼Spring原始碼
- 日常Bug排查-拋異常不回滾
- spring事務增強,事務回滾如何判斷?希望在前端上有個提示Spring前端
- java 事務提交/回滾Java
- 【web】Spring中使用DataSourceTransactionManager手動提交或回滾事務WebSpring
- ORACLE 死事務的回滾Oracle
- spring 事務Spring
- spring事務Spring
- oracle檢視回滾的事務Oracle
- 分散式事務之Spring事務與JMS事務(二)分散式Spring
- Spring 事務管理Spring
- Spring配置事務Spring
- Spring事務管理Spring
- Spring Transaction詳解 – 異常發生時的事務回滾機制Spring
- sqlserver遇到回滾事務的操作策略SQLServer
- 關於事務回滾註解@Transactional
- 信春哥、系統穩、閉眼上線不回滾
- Spring事務專題(四)Spring中事務的使用、抽象機制及模擬Spring事務實現Spring抽象
- 什麼是事務、事務特性、事務隔離級別、spring事務傳播特性?Spring
- Spring系列.事務管理Spring
- Spring事務筆記Spring筆記
- Spring系列-事務管理Spring
- Spring-AOP事務Spring
- Spring的事務管理Spring
- spring事務相關Spring
- spring-5-事務Spring
- Spring Webflux與事務SpringWebUX
- Spring的事務管理(二)宣告式事務管理Spring
- @Transactional spring 配置事務 注意事項Spring
- 不能回滾的Redis事務還能用嗎Redis
- MySQL實現事務的提交和回滾MySql