Как исправить '' Неверный размер результата: ожидаемый 1, фактический 0 ', который я запрашиваю для одного объекта? - PullRequest
0 голосов
/ 20 апреля 2019

Я хочу открыть новую страницу JSP, где есть только одна строка таблицы. Но когда я запускаю это, это показывает мне эту ошибку с неправильным размером. Я запрашиваю только один объект ... (я выбираю таблицы динамически)

private final String SQL_RPL_TABLE_NAME = "?tableName?";
private final String SQL_SELECT_NAME_SPRAV = "SELECT sprav_name FROM sprav_of_spravs WHERE id = ?";
private final String SQL_SELECT_ROW = "select * from " + SQL_RPL_TABLE_NAME + " where id = ?";

@Override
    public Spravochnik selectOne(int spravochnikId, int rowId) {
        return jdbctemplate.queryForObject(getQueryDinamicTable(SQL_SELECT_ROW, getSpravNameAtId(spravochnikId)),
                new Object[] { spravochnikId }, Spravochnik.class);
    }

    protected String getSpravNameAtId(int spravochnikId) {
        return jdbctemplate.queryForObject(SQL_SELECT_NAME_SPRAV, new Object[] { spravochnikId }, String.class);
    }

    protected String getQueryDinamicTable(String query, String tableName) {
        return query.replace(SQL_RPL_TABLE_NAME, tableName).intern();
    }

Услуги

    @Override
    public Spravochnik selectOne(String id) {
        return spravochnikDao.selectOne(getSpravId(id), getRowId(id) );
    }

    protected int getSpravId(String id) {
        return Integer.valueOf(id.substring(0, 3));
    }

    protected int getRowId(String id) {
        return Integer.valueOf(id);
    }

и контроллер

    @RequestMapping(value = "/edit", method = { RequestMethod.POST, RequestMethod.GET })
    public ModelAndView edit(@RequestParam("id") String id, @RequestParam("tableName") String tableName,
            ModelMap model) {
        Spravochnik sprav = spravochnikService.selectOne(id);

        model.addAttribute("tableName", tableName);
        model.addAttribute("sprav", sprav);

        return new ModelAndView("edit", model);
    }

(tableName я получаю из предыдущего jsp, где я перечисляю всю таблицу, так что все в порядке)

Пожалуйста, не могли бы вы сказать, где моя ошибка? Заранее спасибо!

1 Ответ

0 голосов
/ 21 апреля 2019

В случае, если это может помочь кому-либо изменить метод selectOne для использования вашего RowMapper: @Override public Spravochnik selectOne (int spravochnikId, int rowId) {return jdbctemplate.queryForObject (getQueryDinamicTable (SQL_SELECT_ROW, getStikrara) Sprachnik)), rowId);}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...