У меня есть класс сущности JPA с полем OffsetDateTime
вроде этого:
@Entity
class MyEntity(clock: Clock) {
// ...
val created: OffsetDateTime = OffsetDateTime.now(clock)
}
В тесте репозитория я проверяю, правильно ли сопоставлена дата:
assertThat(entity.created).isEqualTo(defaultDateTime)
Если Я сравниваю базовый Instant
(а не также смещение) с OffsetDateTime#isEqual
, он работает:
assertThat(entity.created.isEqual(defaultDateTime)).isTrue()
defaultDateTime
и clock
создаются с помощью этого кода:
val defaultDateTime: OffsetDateTime =
OffsetDateTime.of(2019, 6, 15, 11, 48, 59, 0, ZoneOffset.UTC)
fun createTestClock(dateTime: OffsetDateTime = defaultDateTime) =
Clock.fixed(dateTime.toInstant(), ZoneId.of("UTC"))
Но если я провожу свой тест, время отличается ровно на 2 часа (каково фактическое смещение в моем регионе, центральная европа). База данных PostgreSQL возвращает GMT
, если я запрашиваю часовой пояс с помощью show timezone;
.
Тип данных столбца:
timestamp with time zone not null
Установка соответствующего свойства Hibernate не помогает:
spring.jpa.properties.hibernate.jdbc.time_zone=UTC
Что не так?