Подтвердить что ты не робот

Persist Joda-time DateTime через Hibernate

Я использую Jodatime в своем приложении Play, но в настоящее время мне нужно сделать кучу конвертирования взад и вперед от/до java.util.Date и java.sql.Time.

Поскольку jodatime включен в дистрибутив Play, я думаю, что, вероятно, лучший способ сделать это. Есть ли способ сделать мои поля Model DateTime вместо java.util.Date и java.sql.Time, чтобы преобразование было выполнено автоматически? Есть ли еще один способ упрощения этого?

4b9b3361

Ответ 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" )