在数据库中存储joda-time datetime

时间:2011-04-11 09:06:35

标签: java datetime jpa jodatime

我的应用程序已经使用Joda-time进行日期操作,计划在不久的将来升级到jsr 310.

现在我需要使用jpa 2和hibernate在数据库中存储非常准确的时间戳,但java.util.Date不存储毫秒值。

我找到了UserType并按照这个

配置了我的entitybean
    @Column( name = "TRANSACTION_TIME" )
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime transactionTime;

但它仍然没有存储毫秒。

我传入了此2010-11-02 12:02:54.945,但当我检索到它时,它是2010-11-02 12:02:54.000

我还需要做些什么才能获得毫秒存储时间和可能的时区?

更新 我刚检查过,毫秒实际上是在数据库中,但是Hibernate在返回的结果中没有包含它。相同的格式化程序打印了两个结果,因此无法格式化问题

2 个答案:

答案 0 :(得分:5)

这可能不是您想要的,但您可以将时间存储为数字(= epoch以来的毫秒数),而不是日期时间字段。

答案 1 :(得分:3)

Oracle DATE数据类型不存储小数秒。您需要使用TIMESTAMP或数字列,如前所述。请参阅:http://knol.google.com/k/oracle-date-and-time-data-types