Как динамически вызывать метод из бина - PullRequest
0 голосов
/ 03 декабря 2018

Я использую весеннюю загрузку, запрос из базы данных выглядит так:

@Repository
public interface MyRepository extends CrudRepository<MyEntity, Integer> {
  List<MyEntity> findAllByIdIn(List<Integer> ids);
}

И я хочу динамически вызывать этот метод "findAllByIdIn":

Object bean = context.getBean("myRepository");
bean.getClass().getMethod("findAllByIdIn").invoke(bean, ids);

Я получил исключение:

java.lang.NoSuchMethodException: com.sun.proxy.$Proxy145.findAllByIdIn()

Как я могу вызвать этот метод?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

getMethod принимает 2 параметра.Первый - это имя метода, а второй - различные типы параметров метода.

Ваш код пытается получить метод findAllByIdIn без аргументов, но в вашем хранилище его нет.

Итак, исправление:

bean.getClass().getMethod("findAllByIdIn", List.class)
0 голосов
/ 03 декабря 2018

Из ошибки java.lang.NoSuchMethodException: com.sun.proxy.$Proxy145.findAllByIdIn() ясно, что ваш код пытается получить метод без аргумента, которого на самом деле нет.

Так что попробуйте передать параметры также, как это ожидает параметры, как показано ниже.

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