Почему изменение возвращаемого значения метода выбрасывает ошибку?
Реализую в Spring Data JPA метод delete и возник такой вопрос, почему, если метод возвращает boolean:
@Query(name = Meal.DELETE)
boolean delete(@Param("id")Integer id,@Param("userId") Integer userId);
@Override
public boolean delete(int id, int userId) {
return crudRepository.delete(id, userId);
}
То компилятор выбрасывает InvalidDataAccessApiUsageException, но если я меняю возвращаемое значение на Integer, а метод delete добавляю сравнение (!= 0), то ошибок не возникает и метод корректно выполняется?
Ответы (1 шт):
Некорректное использование АПИ приводит к такому исключению.
Исключение возникает при неправильном использовании API, например при невозможности «скомпилировать» объект запроса, который необходимо скомпилировать перед выполнением. Это представляет собой проблему в нашей структуре доступа к данным Java, а не в базовой инфраструктуре доступа к данным.
Дело в том что метод удаления не может возвращать boolean, поскольку возвращает количество удаленных записей.