我正在使用Joda库作为我的Date / Time对象和jadira userType项目来通过我的MySQL数据库中的Hibernate来保存这些东西。
运行应用程序时我得到了
4 mars 2013 18:48:18 org.jadira.usertype.spi.reflectionutils.JavaTimeZoneWorkaroundHelper <clinit>
ATTENTION: Under JDK 6 it may not be possible to handle DST transitions correctly
4 mars 2013 18:48:18 org.jadira.usertype.spi.reflectionutils.JavaTimeZoneWorkaroundHelper <clinit>
GRAVE: Running under a Zone that uses daylight saving time. To avoid incorrect datetimes being stored during DST transition, either update to JDK 7 or use a Timezone for the JDK without Daylight Saving Time
所以从文中我有两个选择: - 安装JDK 7,我不想这样做(我在mac OS 10.6.8上,我也不想使用“太近”的java版本) - 使用没有夏令时的时区。这意味着我必须将我的JVM的默认TimeZone设置为俄罗斯或南美某个地方。
我可以简单地禁用Jadira的JavaTimeZoneWorkaroundHelper
功能吗?怎么样?
我想到了另一种选择:不要将jadira用于它所提供的内容(将joda对象转换为字符串以及将字符串转换为joda对象)并自行完成转换器。
你有什么建议? 感谢
答案 0 :(得分:0)
您可以独立于您的应用运行的计算机显式设置用于映射的java和数据库时区。通常,最好将日期和时间存储在数据库的UTC时区中。如果这可以解决您的问题,请尝试。
@TypeDef(name = "myDateTime",
typeClass = org.jadira.usertype.dateandtime.joda.PersistentDateTime.class,
parameters = {@Parameter(value="UTC", name="databaseZone"),
@Parameter(value="UTC", name="javaZone")})
答案 1 :(得分:0)
如果将此@TypeDef添加到package-info.java文件中, 并将@Type(name =“myDateTime”)添加到应该具有此类型的属性中,它可以很好地工作。
答案 2 :(得分:0)
自创建此问题以来,创建了较新版本的usertype库,删除了该消息。因此,如果您使用最新版本3.2.0.GA in maven central。它解决了这个问题。