futureOrPresent неверно работает, текущая дата 24.09.23 Jmix 2.0

Здравствуйте, futureOrPresent текущую дату валидирует с ошибкой.
image
image

Суть проблемы в том что используется datePicker, а этот валидатор учитывает и время текущее. Необходимо учитывать какой компонент используется (datePicker или dateTimePicker) и понимать надо ли проверять текущее время.

Добрый день.
Я подобную тему вот здесь заводил.

Обратите внимание, на советы которые мне дали.

Здесь это где? В вашем посте нет ни ссылки, ни скрина.

Прошу прощения.
ссылка потерялась

видимо тот же самый кейс описан внизу этой задачи

Добрый день,
Я смотрел эту ошибку и тут возникают очень много споров и разногласий. В первую очередь, JPA и UI валидаотры работают по-разному. Есть пост, где другой разработчик столкнулся с этим, FutureOrPresent not working for today... how to set the constraint to DAY or YEAR? - #9 by krivopustov - Support - Jmix, тут JPA с Date и FutureOrPresent не работает, но наши внутренние валидаторы в UI работают.

Однако, я проверял работу JPA Validation на голом спринге и на самом то деле это поведение правильное, что Date падает(в случае JPA и аннотации @FutureOrPresent:

Bean Validation: @FutureOrPresent is broken in specific case · Issue #2144 · jmix-framework/jmix · GitHub (мой последний комментарий) →

UPD:
For @FutureOrPresent validator this behaviour is OK if dateType is java.util.Date:
If create empty Spring Boot application with hibernate validation and add tests for @FutureOrPast cases, we would see same results as Jmix behaviour:

  1. java.util.Date
 var dateTestDTO = new DateTestDTO();
 dateTestDTO.setDate(new Date());
Set<ConstraintViolation<Object>> validate = validator.validate(dateTestDTO);

Assertions.assertEquals(0, validate.size()); // failed with "expected: <0> but was: <1>"
  1. java.time.LocalDate
var dateTestDTO = new LocalDateTestDTO();
dateTestDTO.setDate(LocalDate.now());
Set<ConstraintViolation<Object>> validate = validator.validate(dateTestDTO);

Assertions.assertEquals(0, validate.size()); // OK
  1. java.time.LocalDateTime
var dateTestDTO = new LocalDateTimeTestDTO();
dateTestDTO.setDate(LocalDateTime.now());
Set<ConstraintViolation<Object>> validate = validator.validate(dateTestDTO);

Assertions.assertEquals(0, validate.size()); // failed with "expected: <0> but was: <1>"

Demo sample

Ну и вообще с работой @FutureOrPresent работа валидаторов очень стремная, для каждого типа данных он ведет себя по разному в момент коллизии(когда Present), потому советую либо добавлять текущее время и не пользоваться не точными датами, либо в ручную пользоваться, либо использовать ui валидатор, где грубо говоря проверка не по Instant, а именно Date == Date.

На счет ошибки выше, как вы указали, при проверках на FutureORPresent должен быть DatePicker, type=Date