如何在Hibernate 4.x中使用JodaTime Instant(时间戳)(通过Jadira usertype)?

时间:2013-07-22 15:05:48

标签: hibernate jpa jodatime usertype

我在Postgres中有一个timestamp(0) without time zone列,想要通过Hibernate 4.2.2将它映射到Joda-Time Instant。 Hibernate版本4.x的Joda-Time site refersJadira UserType library。但是没有文档。

有人可以给我一个与Hibernate 4.x一起使用的时间戳实体属性的例子,最好兼容JPA吗?是否有可能定义映射一次,以便我不需要使用非常长的类名注释每个timestamp属性?

我不关心时区。我只将unix时间戳保存到数据库中。时区由视图层处理。

1 个答案:

答案 0 :(得分:3)

Thomas,作为起点,请访问文档中的此页面:http://jadira.sourceforge.net/usertype-userguide.html

这是一个例子:

@Column @Type(类型= “org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime”) private LocalDateTime dateTime;

实际上,这几乎就是你需要做的事情。

您可能需要PersistentTimestamp类(请参阅http://jadira.sourceforge.net/apidocs/index.html处的Javadoc以获取完整的类列表)。 Joda Time的可用持久类是:

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

如果您对时区不感兴趣,或者可能是PersistentLocalDateTime,我认为您需要PersistentInstantAsTimestamp。

如果有任何问题超出此范围,您可以在此处跟进或通过http://jadira.atlassian.net/报告,我会尽力协助。

免责声明:我是Jadira Usertype的维护者。