为了账号安全,请及时绑定邮箱和手机立即绑定

嵌套异常是 java.sql.SQLTransactionRollbackException:

嵌套异常是 java.sql.SQLTransactionRollbackException:

蛊毒传说 2021-09-03 17:04:14
概述我制作了一个控制器,我通过自动装配传递 Dao 并使用 jdbctemplate 执行查询。控制器调用 dao 中的方法从数据库中检索一个表。代码控制器@Controller  public class ManagerRoles {    @Autowired      EmployeeDao dao;    @RequestMapping("getEmployeeSchedule/{empID}")    public ModelAndView employeeData(@PathVariable("empID")int empID,HttpServletRequest req,HttpServletResponse res,ModelMap model){        long millis=System.currentTimeMillis();          Date dateStart = new Date(millis);         Date dateFinal = new Date(dateStart.getYear(),dateStart.getMonth(),dateStart.getDate()+30);        System.out.println(dateStart);        System.out.println(dateFinal);        List<EmployeeHolidays> holidayList = dao.retrieveHolidays(dateStart, dateFinal);        if(holidayList!=null){        model.put("holidayList",holidayList);        }        System.out.println(holidayList);        return null;    }}问题是当我尝试运行 webapp 时,当我尝试检索表数据时出现以下错误。类型异常报告消息请求处理失败;嵌套异常是 org.springframework.dao.ConcurrencyFailureException: StatementCallback; SQL [SELECT * FROM HOLIDAYS WHERE DATE >= ? 和日期 <= ? ]; 当前语句的至少一个参数未初始化。嵌套异常是 java.sql.SQLTransactionRollbackException:至少当前语句的一个参数未初始化。说明 服务器遇到了阻止其完成请求的意外情况。例外org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是 org.springframework.dao.ConcurrencyFailureException: StatementCallback; SQL [SELECT * FROM HOLIDAYS WHERE DATE >= ? 和日期 <= ? ]; 当前语句的至少一个参数未初始化。嵌套异常是 java.sql.SQLTransactionRollbackException:至少当前语句的一个参数未初始化。org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) javax.servlet.http.HttpServlet.service(HttpServlet.java: 622)org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpServlet.service(HttpServlet.java:729)我检查了我传递的参数,它们都有值。我似乎没有找到问题的根源。谁能帮我这个?
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

您忘记将parametersas添加arguments到查询方法中,请看这里:


public List<EmployeeHolidays> retrieveHolidays(Date startDate,Date endDate){

        String sql = "SELECT * FROM HOLIDAYS WHERE DATE >= ? AND DATE <= ? ";

        List<EmployeeHolidays> list = template.query(

sql ,

new Object[] { startDate, endDate} //add this

new RowMapper<EmployeeHolidays>(){

            public EmployeeHolidays mapRow(ResultSet rs,int rownumber) throws SQLException{

                EmployeeHolidays e = new EmployeeHolidays();

                e.setDate(rs.getDate(1));

                e.setReason(rs.getString(2));

                e.setStatus(rs.getString(3));

                return e;

            }

        });

        return list;

    }


查看完整回答
反对 回复 2021-09-03
  • 1 回答
  • 0 关注
  • 725 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信