Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring MVC Hibernate会话错误_Java_Spring_Hibernate_Jsp_Spring Mvc - Fatal编程技术网

Java Spring MVC Hibernate会话错误

Java Spring MVC Hibernate会话错误,java,spring,hibernate,jsp,spring-mvc,Java,Spring,Hibernate,Jsp,Spring Mvc,我正在尝试将Hibernate与spring结合使用&执行用户注册操作。这是密码 @Repository @Transactional(value = "myTransactionManager") public class UserFunctionsDAOImpl implements UserFunctionsDAO { @Autowired private SessionFactory sessionFactory; public void setSession

我正在尝试将Hibernate与spring结合使用&执行用户注册操作。这是密码

@Repository
@Transactional(value = "myTransactionManager")
public class UserFunctionsDAOImpl implements UserFunctionsDAO {

    @Autowired
    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory)
    {
        this.sessionFactory = sessionFactory;
    }

    @Override
    public String registerUser(Users user) {
        // TODO Auto-generated method stub

        Query query = this.sessionFactory.getCurrentSession().createQuery("SELECT COUNT(*) FROM Users WHERE emailID = :email_ID OR mobileNo = :mobile_No");
        query.setString("email_ID", user.getEmailID());
        query.setString("mobile_No", user.getMobileNo());

        if(((long)query.uniqueResult()) > 0)
            return "Email or Mobile number already exists";
        else
        {
            user.setUsetType("u");
            Session session = this.sessionFactory.getCurrentSession();
            session.beginTransaction();
            session.save(user);
            session.getTransaction().commit();
            session.close();

            return "User Registered Successfully";
        }
    }

}
在上面的代码中,我得到了错误

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.TransactionException: nested transactions not supported
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:979)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

root cause

org.hibernate.TransactionException: nested transactions not supported
    org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:154)
    org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1471)
    com.pir.dao.UserFunctionsDAOImpl.registerUser(UserFunctionsDAOImpl.java:49)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:606)
    org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
    org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
    com.sun.proxy.$Proxy620.registerUser(Unknown Source)
    com.pir.service.UserFunctionsServiceImpl.registerUser(UserFunctionsServiceImpl.java:36)
    com.pir.controller.RegisterController.addUserController(RegisterController.java:63)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:606)
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

如何删除此错误?

此处的
@Transactional
注释出错。Spring将代理您的
@Repository
Bean,将所有公共函数封装在启动新事务的代码中

因此,调用该方法将在Spring代理中创建一个事务,然后您尝试使用自己的代码启动另一个事务


要解决这个问题,您可以不自己启动另一个事务,只使用Spring提供的事务,也可以将
@Transactional
移动到实际需要它的方法,而不是类中的每个公共方法。

这里的
@Transactional
注释有问题。Spring将代理您的
@Repository
Bean,将所有公共函数封装在启动新事务的代码中

因此,调用该方法将在Spring代理中创建一个事务,然后您尝试使用自己的代码启动另一个事务

要解决这个问题,您可以不自己启动另一个事务,只使用Spring提供的一个事务,也可以将
@Transactional
移动到实际需要它的方法,而不是类中的每个公共方法