Etat HTTP 500 - Неверный размер результата: ожидаемый 1, фактический 2 - PullRequest
0 голосов
/ 05 мая 2018

ДАО:

public Vocabulary getItem(int categoryvocabularyid) {
    String sql = "SELECT * FROM vocabulary WHERE categoryvocabularyid = ?";
    return jdbcTemplate.queryForObject(sql,new Object []{categoryvocabularyid}, new BeanPropertyRowMapper<Vocabulary>(Vocabulary.class));
}

Контроллер:

    @RequestMapping("/public/vocabulary/{id}")
public String readedit(@PathVariable("id") int categoryvocabularyid, ModelMap modelMap){
    modelMap.addAttribute("vocal", vocaburalysDao.getItem(categoryvocabularyid));
    return "public.index.vocabulary.detail";
}

Мой взгляд:

<c:forEach items="${cateVocal }" var="cateVocal">
        <div class="box-item">
            <a href="/exam/56">
                <!-- <div class="img"
                    style="background: url(/upload/2016/05/9106.jpg); background-size: cover;">
                    <p>0/54</p>
                </div> -->
                <!-- <div class="meter">
                    <span style="width: 0%"></span>
                </div> -->
                <h4>Chủ Đề: ${cateVocal.categoryVocaburalyName }</h4>
            </a><a class="learn" href="${pageContext.request.contextPath}/public/vocabulary/${cateVocal.id }">Học ngay</a>

        </div>
        </c:forEach>

Я получил ошибку, я не знаю, по каким причинам это произошло, Ошибка детализации

Etat HTTP 500 - Request processing failed; nested exception is org.springframework.dao.IncorrectResultSizeDataAccessException: Incorrect result size: expected 1, actual 2

Пожалуйста, помогите мне.

Большое спасибо всем

1 Ответ

0 голосов
/ 05 мая 2018

Вы запрашиваете один элемент Vocabulary из вашей БД, но на самом деле он находит более одного, следовательно, вы получаете исключение.

Я видел, что вы находите строку по categoryvocabularyid, поэтому вот решение:

  1. Если categoryvocabularyid является уникальным по Vocabulary (я полагаю, это очень маловероятно), то вы должны поместить уникальный индекс в поле в базе данных и удалить дублирующийся элемент
  2. Если нет, вы должны изменить метод возврата на List<Vocabulary> и используйте queryForList вместо
...