Мы переносим код Hibernate (5.0.2) на Java 8, который также включает преобразование с java.util.Date
в java.time.LocalDate
(для решения вопросов, связанных с обработкой даты в Java 7). Одна из проблем, с которыми я столкнулся, - это то, как Hibernate обрабатывает специальное значение, которое мы используем как «нулевую дату», которая равна 0001-01-01
.Hibernate 5 не обрабатывает LocalDate должным образом
Свойство объявляется следующим образом:
@NotNull
@Column(name = "START_DATE", nullable = false)
private LocalDate startDate;
Значение хранится в базе данных как 0001-01-01
, однако, когда он нагружен Hibernate вдруг превращается в 0000-12-29
. Я предполагаю, что это происходит, потому что Hibernate использует по умолчанию григорианский календарь, и поскольку эта дата до того, как она была введена, используется некоторое преобразование.
Есть ли способ настроить Hibernate для отключения этого поведения (помимо реализации специального свойства)?
Исправлена ошибка (https://hibernate.atlassian.net/browse/HHH-10371) в Hibernate 5.0.6 (http://in.relation.to/2015/12/16/hibernate-orm- 506-окончательный выпуск /). –
@engineer Это действительно исправлено, однако мы не можем его использовать, так как нет совместимой версии 'hibernate-validator', последняя версия которой в семействе 5.0.x была ** 5.0.3 **, и эта отказывается работать с 5.0.6 'hibernate-core'. Любая идея, почему версия так далеко позади/когда она будет исправлена? – yktoo