Persist Joda-time DateTime через Hibernate - PullRequest
41 голосов
/ 08 июня 2011

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

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

Ответы [ 4 ]

52 голосов
/ 08 июня 2011

Для Hibernate 3 добавьте следующую аннотацию в поле даты:

@Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")

Hibernate теперь сделает грязную работу за вас.

(Убедитесь, что у вас есть joda-time-hibernate.jar в вашем пути к классам)

ОБНОВЛЕНИЕ:

Для Hibernate 4 и 5 добавьте следующую аннотацию:

@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")

(Убедитесь, что в вашем пути к классам jadira-usertype-core.jar )

10 голосов
/ 09 мая 2012
  1. Joda рекомендует использовать библиотеки UserType с Hibernate 4.0, версией Hibernate в комплекте с Play 1.2.x (см .: http://joda -time.sourceforge.net / contrib / hibernate / index.html ).

  2. Правильный способ обработки зависимости - использовать файл dependencies.yml, включая строку, подобную этой:

    - org.jadira.usertype -> usertype.jodatime 2.0.1
    
7 голосов
/ 12 июня 2015

Вместо того, чтобы помещать аннотацию @Type в каждое из ваших свойств Joda, вы можете добавить это в свои свойства jpa

#Hibernate config
jadira.usertype.autoRegisterUserTypes=true

и все должно работать нормально.

пс. jadira-usertype-core.jar должно быть в вашем пути к классам.

0 голосов
/ 28 января 2015

Мы должны включить два jar в проекте Hibernate 4:

  • compile ("joda-time: joda-time: 2.8")
  • compile ("org.jadira.usertype: usertype.jodatime: 2.0.1 ")
...