org.springframework.dao.EmptyResultDataAccessException:结果大小不正确:预期1,实际0

时间:2015-02-23 10:26:48

标签: java spring templates jdbc

当我提交复制数据时,我发现以下错误是代码..

public String deleteExistingRecordWeekWise(String monthOrWeek) throws ApplicationException {

    try {

        setMonthAndArea();

        String[] stringValues = selectedMonthAndYear.split("-");
        int year=Integer.parseInt(stringValues[0]);
        int month=Integer.parseInt(stringValues[1]);

        String timePrd = null;
        String wk = null;


        if(null==timePeriod || timePeriod.isEmpty()){
            timePeriod= new ArrayList <String>();
            timePeriod.add("2");
        }
        if(null==weekWise || weekWise.isEmpty()){
            weekWise= new ArrayList <String>();
            weekWise.add("1");
        }
        if(Integer.parseInt(timePeriod.get(0))==2){
            timePrd="W";
            if(null==weekWiseSelection){
                if(Integer.parseInt(weekWise.get(0))==1){
                    wk="W1";
                }else if(Integer.parseInt(weekWise.get(0))==2){
                    wk="W2";
                }else {
                    wk="W3";
                }
            }else{
                wk=weekWiseSelection;
            }
        }

        ReportsBO.deleteProjectStatusWeekWise(wk,month,year,selectedArea);

    } catch (ApplicationException ex) {
        addActionError(ex.getMessage());
        fetchFields();
        return ERROR;
    }

    if(null!=weekWiseSelection || !weekWiseSelection.equalsIgnoreCase("month")){
        addActionMessage("Existing records are deleted and copied data from previous month.");
    }else{
        addActionMessage("Existing records are deleted and copied data from previous bi weekly.");
    }
    return SUCCESS;

和DAO班..

public void deleteProjectStatusWeekWise(String week,int month,int year,String area)抛出ApplicationException {         int areaId = Integer.parseInt(area);

    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

    try {
        int projId = jdbcTemplate.queryForInt(ProjectStatus.FETCH_PROJECT_STATUS_WEEKWISE,new Object[] {week,month,year,areaId});
        jdbcTemplate.update(ProjectStatus.DELETE_PROJECT_DET_STATUS_MONTH,new Object[] {projId});
        jdbcTemplate.update(ProjectStatus.DELETE_PROJECT_STATUS_WEEKWISE,new Object[] {week,month,year,areaId});
    } catch (Exception e) {
        LOG.error("Exception occurred in dashboard.performance.gmu.dao.ProjectStatusDAO.fetchProjectStatusTypeList(int)",e);
        throw new ApplicationException("Failed to fetch project type list. Please contact System Administrator.");
    }

}

此错误即将到来,任何人都可以帮助解决此问题。

}

1 个答案:

答案 0 :(得分:0)

看起来它可能来自jdbcTemplate.queryForInt(...);。如果预期结果至少有一行(或元素)但实际返回零行(或元素),则抛出EmptyResultDataAccessException。检查以确保数据库中确实存在projId