Почему изменение возвращаемого значения метода выбрасывает ошибку?

Реализую в 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 шт):

Автор решения: Roman C

Некорректное использование АПИ приводит к такому исключению.

Исключение возникает при неправильном использовании API, например при невозможности «скомпилировать» объект запроса, который необходимо скомпилировать перед выполнением. Это представляет собой проблему в нашей структуре доступа к данным Java, а не в базовой инфраструктуре доступа к данным.


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

→ Ссылка