Persist Joda-time DateTime через Hibernate
Я использую Jodatime в своем приложении Play, но в настоящее время мне нужно сделать кучу конвертирования взад и вперед от/до java.util.Date
и java.sql.Time
.
Поскольку jodatime включен в дистрибутив Play, я думаю, что, вероятно, лучший способ сделать это. Есть ли способ сделать мои поля Model DateTime
вместо java.util.Date
и java.sql.Time
, чтобы преобразование было выполнено автоматически? Есть ли еще один способ упрощения этого?
Ответы
Ответ 1
Для Hibernate 3 добавьте следующую аннотацию в поле даты:
@Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
Теперь Hibernate будет выполнять грязную работу для вас.
(Убедитесь, что joda-time-hibernate.jar в вашем пути к классам)
UPDATE:
Для Hibernate 4 и 5 добавьте следующую аннотацию:
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
(Убедитесь, что jadira-usertype-core.jar в вашем пути к классам)
Ответ 2
-
Joda рекомендует использовать библиотеки UserType с Hibernate 4.0, версию Hibernate в комплекте с Play 1.2.x(см. http://joda-time.sourceforge.net/contrib/hibernate/index.html).
-
Правильный способ обработки зависимостей - использовать файл dependencies.yml
, включая следующую строку:
- org.jadira.usertype -> usertype.jodatime 2.0.1
Ответ 3
Вместо того, чтобы помещать аннотацию @Type
в каждый из ваших свойств Joda, вы можете добавить это в свои свойства jpa
#Hibernate config
jadira.usertype.autoRegisterUserTypes=true
и он должен работать нормально.
ps. jadira-usertype-core.jar должен находиться в вашем пути к классам.
Ответ 4
Мы должны включить две банки в проекте Hibernate 4:
- compile ( "joda-time: joda-time: 2.8" )
- компиляции ( "org.jadira.usertype: usertype.jodatime: 2.0.1" )