Я пытаюсь вызвать метод с помощью отражения.Подпись метода, который я пытаюсь получить, выглядит следующим образом:
public static JPAQuery find(String query, Object... params) {...}
Я использовал следующий фрагмент кода для получения объявленного метода:
Method findEntities = clazz.getDeclaredMethod("find", params);
Я пытаюсь вызватьсо следующим фрагментом:
Object[] args = new Object[2];
args[0] = fieldName + " = ?"; // Of type String
args[1] = entity; // Of a type extending GenericModel
JPAQuery query = (JPAQuery)findEntities.invoke(null, args); <-- EXCEPTION HERE!!!
... но получаются следующие исключения:
play.exceptions.JavaExecutionException: argument type mismatch
....
Caused by: java.lang.IllegalArgumentException: argument type mismatch
и
play.exceptions.JavaExecutionException: wrong number of arguments
...
Caused by: java.lang.IllegalArgumentException: wrong number of arguments
Может кто-нибудь помочь с этим?
Дальнейшее наблюдение
Когда я изменяю строку:
JPAQuery query = (JPAQuery)findEntities.invoke(null, args);
на
JPAQuery query = (JPAQuery)findEntities.invoke(null, fieldName, entity);
одно из исключений с указанием "неправильно"Количество аргументов "исчезнет".Так что у меня сейчас только проблема несоответствия типов аргументов.Почти там ...: D