hibernate的executeWithNativeSession(HibernateCallbk())、execute(new HibernateCallback())无法对spring事务回滚
来源:互联网 发布:算法心得 原书 编辑:程序博客网 时间:2024/05/22 09:42
hibernate作为DAO使用如下的方法操作数据库时,无法对spring在service层添加的事务进行回滚。
hibernateTemplate.executeWithNativeSession(new HibernateCallback() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { session.beginTransaction(); SQLQuery sqlQuery = session.createSQLQuery("DELETE FROM teacher_class_check where teacher_id=:teacherId AND class_id=:classId"); Query query = sqlQuery.setString("teacherId",teacherId).setString("classId",classId); query.executeUpdate(); session.getTransaction().commit(); return null; } });
hibernateTemplate.execute(new HibernateCallback() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { session.beginTransaction(); SQLQuery sqlQuery = session.createSQLQuery("DELETE FROM teacher_class_check where teacher_id=:teacherId AND class_id=:classId"); Query query = sqlQuery.setString("teacherId",teacherId).setString("classId",classId); query.executeUpdate(); session.getTransaction().commit(); return null; } });
下面是尝试回滚时的堆栈信息。无法开启事务。(但同一个地方我使用其他方法操作数据库可以回滚)
04-Sep-2016 15:04:13.013 SEVERE [http-nio-8080-exec-8] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [newClassProject] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.transaction.TransactionSystemException: Could not roll back Hibernate transaction; nested exception is org.hibernate.TransactionException: Transaction not successfully started] with root cause org.hibernate.TransactionException: Transaction not successfully started at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:183) at org.springframework.orm.hibernate3.HibernateTransactionManager.doRollback(HibernateTransactionManager.java:676) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:845) at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:822) at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:412) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:114) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) at com.sun.proxy.$Proxy20.emptyData(Unknown Source) at com.shusheng.controller.CheckController.emptyData(CheckController.java:116) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:108) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
源码看的有点蒙,如果大神知道为什么欢迎留言。
1 0
- hibernate的executeWithNativeSession(HibernateCallbk())、execute(new HibernateCallback())无法对spring事务回滚
- Spring 事务无法回滚
- getHibernateTemplate().execute(new HibernateCallback())方法的优点
- spring 事务无法正常回滚的案例
- spring事务的回滚
- Spring的事务回滚
- getHibernateTemplate().execute(new HibernateCallback())方法
- getHibernateTemplate().execute(new HibernateCallback())方法
- getHibernateTemplate().execute(new HibernateCallback())方法
- getHibernateTemplate().execute(new HibernateCallback())方法
- getHibernateTemplate().execute(new HibernateCallback())方法
- getHibernateTemplate().execute(new HibernateCallback())方法
- getHibernateTemplate().execute(new HibernateCallback())方法
- getHibernateTemplate().execute(new HibernateCallback())方法
- 事务: spring+hibernate实现事务回滚及其他
- 事务无法回滚
- Spring回滚事务机制与创建数组的语法,Object[] params = new Object[]{值}
- spring 事务注解 需要捕获的throw new Exception("...");不会回滚
- Android基础————UI控件以及控件事件处理详解
- 命令行运行java的时候总是提示:找不到或无法加载主类
- 1、2、3、4四个数字,无重复的3位数
- [LeetCode] 130. Surrounded Regions
- mysql -- 通过linux shell 脚本,导出部分数据
- hibernate的executeWithNativeSession(HibernateCallbk())、execute(new HibernateCallback())无法对spring事务回滚
- GitHub网站访问不到错误
- 动态代理
- html5开始之网页结构
- 菜鸟笔记--Java通过Rserve调用R语言
- N皇后问题
- hibernate执行的SQL语句返回的list集合用Object[]接收遍历
- 《走近大数据之Hive进阶》学习笔记(2)
- *[Lintcode]Construct Binary Tree from Preorder and Inorder Traversal