Веб-поддержка данных QueryDSL Spring с помощью java.util.Date

Я пытаюсь использовать веб-поддержку данных QueryDSL Spring для фильтрации результатов запросов REST на основе значения даты, переданной в качестве параметра запроса.

В настоящее время я сам создаю предикат с даты, переданной в виде строки:

@GetRequest("/foos")
public List<Foo> getFoos(@RequestParam(name = "date", required = false) 
    @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) {
     Predicate predicate = QFoo.date.eq(date);
     ...
}

Но я хочу сделать что-то вроде:

@GetRequest("/foos")
public List<Foo> getFoos(@QueryDslPredicate(root = Foo.class) Predicate predicate) {
     ...
}

Но, очевидно, он не может проанализировать дату, поскольку у него больше нет информации о шаблоне строки даты. Есть ли способ заставить эту веб-поддержку QueryDSL работать с объектами Date?

вы можете показать свой класс Foo ?. дата - это поле в классе Foo?

pvpkiran 07.06.2018 11:27
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
1 317
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте добавить @DateTimeFormat в поле сущности:

@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date date;

Большое спасибо! На самом деле так просто!

Plog 07.06.2018 12:25

В моем случае Контроллеру нужен один параметр типа @QuerydslPredicate. Это работает для меня!

Renato Pradebon 03.09.2019 20:46

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