关于:No transactional EntityManager available--spring MVC 的事务管理
2017-01-19 16:37
525 查看
控制台报错提示:
事务管理配置有问题,可以这样配置:
1.applicationContext.xml(spring的配置文件)中,去掉对controller的扫描
2.**-servlet.xml (spring MVC的配置文件)中,去掉对 service的扫描,加入对controller的扫描
3.依赖spring对事务进行管理,所以事务的配置只有在 applicationContext.xml中才会起作用,即
必须配置在 spring的配置文件applicationContext.xml 中
4.用事务去控制的service,不能加try catch去捕获异常,否则不能被spring拦截到,事务就失效了。
javax.persistence.TransactionRequiredException: No transactional EntityManager available at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:275) at $Proxy29.persist(Unknown Source) at cn.lamb7758.shop.base.dao.impl.DataDaoImpl.save(DataDaoImpl.java:27) at cn.lamb7758.shop.user.service.impl.UserServiceImpl.save(UserServiceImpl.java:33) at cn.lamb7758.shop.user.action.UserAction.regist(UserAction.java:115) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain< d8a9 span class="hljs-preprocessor">.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2441) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2430) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722)
事务管理配置有问题,可以这样配置:
1.applicationContext.xml(spring的配置文件)中,去掉对controller的扫描
<context:component-scan base-package="com.trans"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan>
2.**-servlet.xml (spring MVC的配置文件)中,去掉对 service的扫描,加入对controller的扫描
<context:component-scan base-package="cn.lamb7758"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> </context:component-scan>
3.依赖spring对事务进行管理,所以事务的配置只有在 applicationContext.xml中才会起作用,即
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean>
必须配置在 spring的配置文件applicationContext.xml 中
4.用事务去控制的service,不能加try catch去捕获异常,否则不能被spring拦截到,事务就失效了。
相关文章推荐
- No transactional EntityManager available--spring MVC 的事务管理(jpa)
- javax.persistence.TransactionRequiredException: No transactional EntityManager available
- No transactional EntityManager available; nested exception is javax.persistence.TransactionRequiredException: No transactional EntityManager available
- spring 管理事务配置时,结果 报错: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here这个异常
- 关于Spring事务管理中@Transactional的参数配置
- Springboot No EntityManager with actual transaction available for current thread
- javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available..
- javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available f
- No EntityManager with actual transaction available for current thread - cannot reliably process 'mer
- No EntityManager with actual transaction available for current thread - cann
- 解决一个Sping管理hibernate时的事务问题(No Hibernate Session bound to thread)
- Spring @Transactional 声明式事务管理 getCurrentSession
- birt 关于 There is no report design object available
- 关于Spring MVC注解 @Transactional 事务标签 @InitBinder 标签
- 关于there is no cource code available for the current的解决方法
- .NET 部署-04关于配置管理对话框(Configuration Manager Dialog Box)
- 【转】Spring @Transactional 声明式事务管理 getCurrentSession
- Spring 下事务管理-使用AOP @Transactional注解管理
- 关于用spring的JtaTransactionManager,配置分布式事务
- 关于Eclipse的自动补全快捷键提示no completions available