У меня есть таблица БД Postrges, в которой есть столбец created_at TIMESTAMP WITHOUT TIMEZONE
. В этой таблице есть запись с отметкой времени 2020-02-15 00:00:00
. В спящем объекте это поле отображается следующим образом:
@Column(name = "created_at", updatable = false)
@CreationTimestamp
private Instant createdAt;
И я пытаюсь запросить записи, используя CriteriaAPI
. Я формирую запрос следующим образом:
criteriaBuilder.greaterThanOrEqualTo(rootEntity.get("created_at"), Instant.ofEpochSecond(1581724800L).truncatedTo(ChronoUnit.DAYS))
Число 1581724800L
соответствует 2020-02-15 00:00:00
, поэтому оно должно работать. Однако этот запрос не возвращает запись, которую я ищу. Взглянув на журналы БД, я обнаружил, что на самом деле он запрашивает отметку времени 2020-02-15 03:00:00
. Итак, хотя я использую Instant
, а поле DB в запросе - TIMESTAMP WITHOUT TIMEZONE
, оно преобразует временную метку в зонированную.
В чем может быть проблема и что я здесь не так делаю?