Проблема отражения: NoSuchMethodException <init>...pecification.SearchCriteria, [Ljava.lang.String;)

Ну, NoSuchMethodException, как правило, хорошо говорит само за себя. К сожалению, в моем случае я даже не мог догадаться, почему я получаю такую ​​ошибку.

Я забочусь о коде от другого разработчика, и я должен поддерживать его. Он был разработан с учетом спецификаций. Для того, чтобы сделать поисковую систему очень общей, любая строка, передаваемая от клиента к сервису отдыха, разделяется, чтобы построить критерии поиска.

При выполнении "clazzSpec.getDeclaredConstructor(SearchCriteria.class, String[]. Class).newInstance(param);" я получил

java.lang.NoSuchMethodException: br.com.mycompany.specification.SomethingSpecification.<init>(br.com.mycompany.specification.SearchCriteria, [Ljava.lang.String;)

Глядя на изображение ниже, я не вижу, что пропустил

Критерий поиска:

public class SearchCriteria {

    private String key;
    private String operation;
    private Object value;

    public SearchCriteria(String key, String operation, Object value) {
        this.key = key;
        this.operation = operation;
        this.value = value;
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getOperation() {
        return operation;
    }

    public void setOperation(String operation) {
        this.operation = operation;
    }

    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        this.value = value;
    }

}

SomethingSpecification

public class SomethingSpecification extends Specification<Something> {

    public SomethingSpecification(SearchCriteria criteria) {
        super(criteria);
    }

    @Override
    public Predicate toPredicate(Root<Something> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
        switch (criteria.getOperation()) {
        case "=":
...
        }
        return super.toPredicate(root, query, builder);
    }

}

1 ответ

Решение

Код отражения ищет конструктор с двумя аргументами: SearchCriteria и String[], Но единственный конструктор для SomethingSpecification только один аргумент.

Другие вопросы по тегам