当我根据机器时间从db中检索它时,Hibernate是否调整了java.util.date(毫秒)?

时间:2012-01-06 17:03:03

标签: java hibernate

所以我们使用Hibernate进行对象关系映射,我们有一个Student.java(POJO)和一个registrationDate(java.util.date)。我们使用此日期“2012-01-05 10:00:00”保存学生对象,当我们查看数据库时,我们保存它时看起来正确。

问题是当我们从db(student.getRegistrationDate)取回它而不是在GMT中返回正确的毫秒时它会根据我们的时区(我们的时区-3,错误的时间返回一个修改的毫秒)日期为“2012-01-05 13:00:00”)。现在这不是java.util.date的正常行为,因为它不保存时区信息,所以我担心实际上Hibernate是否正在调整date对象中的毫秒以匹配服务器本地时间,或者它可能是别的什么?

注意:我使用date.getTime而不是date.ToString来获取日期。

2 个答案:

答案 0 :(得分:0)

如果您想将它用作时间戳,请使用java.sql.Timestamp而不是java.util.Date(假定Zulu时间),这将正确处理时区。

或者您可以尝试joda Time但是使用Hibernate和JodaTime,您可能需要一些工作,请参阅this

答案 1 :(得分:0)

转换发生在时区应用程序运行中。正如您已经了解的那样。检查一下 - http://community.jboss.org/wiki/UserTypeForNon-defaultTimeZone