Невозможно вызвать метод с именем в виде строки - PullRequest
0 голосов
/ 08 апреля 2020
    public List<student> get_students_roll_age(String method,String field ,Integer parameter1, int parameter2) throws Exception
  {
    field = "student_"+field;

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<student> cq = cb.createQuery(student.class);

    Root<student> s = cq.from(student.class);

    Class<?>[] paramTypes = {Path<student>.class, Integer.class};

    Method cbMethod = cb.getClass().getMethod(method, paramTypes);

    Predicate greater_or_less  = (Predicate) cbMethod.invoke(cb, s.get(field), parameter1);


    cq.where( greater_or_less);

    TypedQuery<student> query = em.createQuery(cq);
    return query.getResultList();
}

Я получаю имя метода как string и хочу вызвать этот метод. Но Class<?>[] paramTypes = {Path<student>.class, Integer.class}; выдает ошибку, поскольку невозможно выбрать из parameterized type.

Кто-нибудь может мне помочь с этим? Заранее спасибо

...