Как использовать JodaTime Instant (отметка времени) с Hibernate 4.x (через тип пользователя Jadira)?

У меня есть столбец timestamp(0) without time zone в Postgres, и я хочу сопоставить его с мгновенным временем Joda через Hibernate 4.2.2. сайт Joda-Time ссылается на Jadira UserType library для Hibernate версий 4.x. Но документации нет.

Может ли кто-нибудь привести мне пример свойства Entity с меткой времени, используемого с Hibernate 4.x, желательно, совместимого с JPA? Есть ли возможность определить отображение один раз, чтобы мне не нужно было аннотировать каждое свойство метки времени очень длинным именем класса?

Меня не волнуют часовые пояса. Я сохраняю только временные метки unix в базе данных. Часовые пояса обрабатываются слоем View.


person Thomas Koch    schedule 22.07.2013    source источник
comment
[ссылка](java.dzone.com /articles/how-map-dates-hibernate-%E2%80%93-use DZone: как сопоставлять даты с помощью Hibernate — используйте joda-time)   -  person Thomas Koch    schedule 06.10.2013


Ответы (1)


Томас, в качестве отправной точки посетите эту страницу в документации: http://jadira.sourceforge.net/usertype-userguide.html

Вот пример:

@Column @Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime") private LocalDateTime dateTime;

Собственно, это почти все, что вам нужно сделать.

Вероятно, вам нужен класс PersistentTimestamp (см. Javadoc по адресу http://jadira.sourceforge.net/apidocs/index.html для полного списка классов). Доступные постоянные классы для Joda Time:

PersistentDateMidnight
PersistentDateMidnightAsString
PersistentDateTime
PersistentDateTimeAndZone
PersistentDateTimeAndZoneWithOffset
PersistentDateTimeAsString
PersistentDateTimeWithZone
PersistentDateTimeZoneAsString
PersistentDateTimeZoneWithOffsetAsString
PersistentDurationAsString
PersistentInstantAsMillisLong
PersistentInstantAsNanosBigInteger
PersistentInstantAsString < br> PersistentInstantAsTimestamp
PersistentInterval
PersistentLocalDate
PersistentLocalDateAsString
PersistentLocalDateTime
PersistentLocalDateTimeAsString
PersistentLocalTime
PersistentLocalTimeAsMillisInteger
PersistentLocalTimeAsNanosLong
PersistentLocalTimeAsString
PersistentLocalTimeAsTimestamp
PersistentMinutes PersistentMonthDayAsString
PersistentPeriodAsString
PersistentTimeOfDay
PersistentTimeOfDayAsMillisInteger
PersistentTimeOfDayAsNanosLong
PersistentTimeOfDayAsString
PersistentTimeOf DayAsTimestamp
PersistentYearMonthAsString
PersistentYearMonthDay
PersistentYearMonthDayAsString
PersistentYears

Я думаю, вам нужен PersistentInstantAsTimestamp, если вас не интересуют часовые пояса, или, может быть, PersistentLocalDateTime.

Если у вас есть какие-либо проблемы, помимо этого, вы можете связаться с ними здесь или сообщить о них через http://jadira.atlassian.net/ и я сделаю все возможное, чтобы помочь.

Отказ от ответственности: я являюсь сопровождающим Jadira Usertype.

person Chris Pheby    schedule 15.08.2013
comment
спасибо за эту баночку. Я думаю, что этот список было бы интересно написать в веб-ссылке. Хотя я нашел его в Google после нескольких вопросов, я думаю, что эта информация полезна для основного справочника. - person Rafael Ruiz Tabares; 27.03.2014