вложенное исключение: java .lang.IllegalArgumentException: значение параметра [2020-04-20] не соответствует ожидаемому типу [java .util.Date (n / a)]] - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу отправить этот запрос http://localhost: 8080 / {url}? Start = 2020-04-20 & end = 2020-04-24 & status = success & status = failed

В транзакции модель

private java.sql.Timestamp addedOn;

Я пытаюсь создать динамический c запрос для нескольких фильтров после этого блога: https://attacomsian.com/blog/spring-data-jpa-specifications

Спецификации. java file toPredicate method

if (criteria.getOperation().equals(SearchOperation.GREATER_THAN)) {
                predicates.add(builder.greaterThan(
                        root.get(criteria.getKey()), criteria.getValue().toString()));
} else if (criteria.getOperation().equals(SearchOperation.LESS_THAN)) {
                predicates.add(builder.lessThan(
                        root.get(criteria.getKey()), criteria.getValue().toString()));
}

Вот мой код контроллера

Timestamp start = new Timestamp(dateFormat.parse(request.getParameter("start")).getTime());
Timestamp end = new Timestamp(dateFormat.parse(request.getParameter("end")).getTime());
Specs txnSpecs = new Specs();
txnSpecs.add(new SearchCriteria("addedon", start, SearchOperation.GREATER_THAN_EQUAL));
txnSpecs.add(new SearchCriteria("addedon", end, SearchOperation.LESS_THAN_EQUAL));
txnSpecs.add(new SearchCriteria("status", Arrays.asList(request_params.get("status")), SearchOperation.IN));
List<Transaction> txnList = transactionRepository.findAll(txnSpecs);
return txnList;        

Но когда я делаю запрос, я получаю:

nested exception is java.lang.IllegalArgumentException: Parameter value [2020-04-20] did not match expected type [java.util.Date (n/a)]]

Нужно ли преобразовывать значение Date перед Я отправляю его как параметр для запроса SQL? Или мне нужно использовать другие типы даты?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Нужно ли преобразовывать значение Date перед отправкой его в качестве параметра для запроса SQL?

Нет, верно и обратное, вы должны оставить его Date, но вы конвертируете его в строку, вызывая criteria.getValue().toString().

0 голосов
/ 27 апреля 2020

Проверьте, правильно ли ваш dateFormat соответствует шаблону вашего значения: yyyy-MM-dd:

DateFormat dateFormat = new SimpleDateFormat ("yyyy-MM-dd");

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