Session 未找到当前线程的会话(休眠)

Session 未找到当前线程的会话(休眠),session,spring-mvc,hibernate-4.x,Session,Spring Mvc,Hibernate 4.x,OK(JAVA大师) 我对spring非常陌生,当我在登录后参考下面的JSP安全页面时,遇到了“没有会话找到当前线程”的问题。到目前为止,一切正常 我需要你们的帮助 这是该页面的控制器: package employee.controller; import employee.service.AdminService; import employee.service.UserService; import org.apache.log4j.Logger; import org.springfr

OK(JAVA大师)

我对spring非常陌生,当我在登录后参考下面的JSP安全页面时,遇到了“没有会话找到当前线程”的问题。到目前为止,一切正常

我需要你们的帮助

这是该页面的控制器:

package employee.controller;

import employee.service.AdminService;
import employee.service.UserService;
import org.apache.log4j.Logger;
import org.springframework.security.access.annotation.Secured;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.annotation.Resource;

/**
 * @author serge
 *
 * Handles and retrieves the common or admin page depending on the URI template.
 * A user must be log-in first he can access these pages. Only the admin can see
 * the adminpage, however.
 */
@Controller
@RequestMapping("/main")
public class MainController {

    protected static Logger logger = Logger.getLogger("controller");

    @Resource(name = "adminService")
    private AdminService adminService;

    @Resource(name = "userService")
    private UserService userService;

    /**
     * Handles and retrieves a /WEB-INF/jsp/employee-page.jsp
     *
     * containing all employee
     *
     * @return the name of the JSP page
     */

    @Secured("ROLE_USER")
    @RequestMapping(value = "/employee-list",method = RequestMethod.GET)
    public String getEmployeeListPage(Model model) {
        logger.debug("Received request to show all employee page");

        // Retrieve all employee and attach to model
        model.addAttribute("all-employee", userService.findAllEmployee());
        return "employee-page";
    }

    /**
     * Handles and retrieves /WEB-INF/jsp/admin-page.jsp that only admins can see
     *
     * @return the name of the JSP page
     */
    @Secured("ROLE_ADMIN")
    @RequestMapping(value = "/admin", method = RequestMethod.GET)
    public String getAdminPage() {
        logger.debug("Received request to show admin page");
        return "admin-page";
    }
}
这是从控制器调用的用户服务:

package employee.service.impl;

import employee.DAO.EmployeeInfoDAO;
import employee.model.EmployeeInfo;
import employee.service.UserService;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.annotation.Secured;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author serge
 * 
 * Reader level
 * 
 * Service to Retrieve info about Employees
 */


@Service("userService")
@Transactional
public class UserServiceImpl implements UserService {
    
    protected static Logger logger = Logger.getLogger("service");
    private EmployeeInfoDAO emplInfoDAO;

    @Autowired
    public void setEmployeeDao(EmployeeInfoDAO emplInfoDAO) {
        this.emplInfoDAO = emplInfoDAO;
    }

    /**
     * Retrieving Employee Information by id
     *
     * @return EmployeeInfo object
     */
    @Override
    @Transactional
    @Secured("ROLE_USER")
    public EmployeeInfo findEmployeeByID(Integer id) {

        logger.debug("Retrieving Employee with id= " + id);
        EmployeeInfo employeeInfo = new EmployeeInfo();
        employeeInfo.setId(id);
        emplInfoDAO.find(employeeInfo);
        return employeeInfo;
    }

    /**
     * Retrieving all Employees  
     *
     * @return List of EmployeeInfo object
     */
    @Override
    @Secured("ROLE_USER")
    @Transactional(readOnly = true)
    public List<EmployeeInfo> findAllEmployee() {
        
        logger.debug("Retrieving all Employee");
        return emplInfoDAO.findAll();
    }
    
    /**
     * Retrieving Employees by last name
     *
     * @return List of EmployeeInfo object
     */
    @Override
    @Secured("ROLE_USER")
    @Transactional(readOnly = true)
    public List<EmployeeInfo> findAllByLastName(String lastName, Object paramValue) {
        lastName = "lastName";
        
        logger.debug("Retrieving Employee by last name: " + paramValue);
        return emplInfoDAO.findAllByParam(lastName, paramValue);
    }
    
    /**
     * Retrieving Employees by first name
     *
     * @return List of EmployeeInfo object
     */
    @Override
    @Secured("ROLE_USER")
    @Transactional(readOnly = true)
    public List<EmployeeInfo> findAllByFirstName(String firstName, Object paramValue) {
        firstName = "firstName";
        
        logger.debug("Retrieving Employee by first name: " + paramValue);
        return emplInfoDAO.findAllByParam(firstName, paramValue);
    }
}

请帮助我了解我的错误在哪里,可能是配置错误?

如果您有dispatch-servlet.xml,请添加

<tx:annotation-driven />

或者有另一种选择: 请看这个:

如果您有dispatch-servlet.xml,请添加

<tx:annotation-driven />

或者有另一种选择: 请看这个:

能否将tx:annotation-driven添加到config.xml文件中并尝试一下。能否将tx:annotation-driven添加到config.xml文件中并尝试一下。
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.HibernateException: No Session found for current thread
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
...

org.hibernate.HibernateException: No Session found for current thread
    org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:97)
    org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:941)
    employee.DAO.impl.CustomHibernateDaoSupport.getCurrentSession(CustomHibernateDaoSupport.java:31)
    employee.DAO.impl.CustomHibernateDaoSupport.findAll(CustomHibernateDaoSupport.java:64)
...
<tx:annotation-driven />