我的应用程序已经使用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在返回的结果中没有包含它。相同的格式化程序打印了两个结果,因此无法格式化问题
答案 0 :(得分:5)
这可能不是您想要的,但您可以将时间存储为数字(= epoch以来的毫秒数),而不是日期时间字段。
答案 1 :(得分:3)
Oracle DATE数据类型不存储小数秒。您需要使用TIMESTAMP或数字列,如前所述。请参阅:http://knol.google.com/k/oracle-date-and-time-data-types