当前位置: 首页 > 知识库问答 >
问题:

Jdbctemplate查询对象。IncorrectResultSizeDataAccessException:结果大小不正确:预期为1,实际为10

边明煦
2023-03-14

这是我的DAO代码

@Autowired
    public void setDataSource(DataSource dataSource) {
    this.jdbcTemplate = new JdbcTemplate(dataSource);

    }
    public JSONObject getdata(UserBean userBean)
    {
        JSONObject jsonObject = new JSONObject();
        return this.jdbcTemplate.queryForObject("select username from customer", new RowMapper<JSONObject>() {

            @Override
            public JSONObject mapRow(ResultSet rs, int rowNum) throws SQLException 
            {
                jsonObject.put("username",rs.getString("username"));
                return jsonObject;
            }

        });

    }

这是我的控制器代码

    @SuppressWarnings("unchecked")
    @RequestMapping(value="/doLogin")
    public ModelAndView doLogin(@ModelAttribute @Valid UserBean userBean,BindingResult result)
    {
        ModelAndView view = new ModelAndView("login");
        if(!result.hasFieldErrors())
        {
            if(!combatService.authenticateUser(userBean)) 
            {
                result.addError(new ObjectError("err", "Invalid Credentials"));

            } 
            else
                {
                 if(retrieveService.getdata(userBean) != null)
                 {
                     JSONObject responseArray=new JSONObject();
                     responseArray.put("usernames",retrieveService.getdata(userBean));
                     return new ModelAndView("welcomes", responseArray);
                }   
                }
        }
        return view;
        }

这就是错误

消息请求处理失败;嵌套异常为org。springframework。道。IncorrectResultSizeDataAccessException:结果大小不正确:预期为1,实际为10

共有1个答案

赫连华皓
2023-03-14

您的查询会直接从客户中选择用户名,这意味着此查询将返回所有用户名。据推测,您的数据库中当前有10条记录。

您需要运行SELECT username From客户WHERE(某事)

您还没有粘贴您的用户bean代码,但假设其中有一个getUserId()方法,您可以执行如下操作:返回这个。jdbcTemplate。queryForObject(“从用户ID=?”的客户中选择用户名”,新建行映射器

 类似资料: