gpt4 book ai didi

jodatime - jadira用户类型joda时间从数据库返回了不正确的日期时间

转载 作者:行者123 更新时间:2023-12-02 05:01:41 25 4
gpt4 key购买 nike

我在Hibernate 4中将jadira用户类型用于joda时间。我需要使用jvm日期时间进行存储和检索。问题是回读的日期有2个小时的偏移量。我们在UTC + 2上。日期已正确存储在数据库中。数据库是MySQL5。我在 session 工厂配置中全局设置了databaseZone和javaZone,如下所示:

<prop key="jadira.usertype.autoRegisterUserTypes">true</prop>
<prop key="jadira.usertype.databaseZone">jvm</prop>
<prop key="jadira.usertype.javaZone">jvm</prop>

数据库本身已配置为时区SAST。例如,使用上述配置,日期2008-01-01存储在数据库中,并读取为2007-12-31T22:00:00.000 + 02:00。我还尝试了如下操作,但没有使用注释进行全局配置,但结果相同:
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime",
parameters = { @Parameter(name = "databaseZone", value = "jvm"),
@Parameter(name = "javaZone", value = "jvm")})

如果我在数据库上运行以下查询,
SELECT version( ) , @@time_zone , @@system_time_zone , NOW( ) , UTC_TIMESTAMP( );

我得到结果:
version : 5.5.13
@@time_zone : SYSTEM
@@system_time_zone : South Africa Standard Time
NOW() : 2013-04-03 14:33:12
UCT_TIMESTAMP() : 2013-04-03 12:33:12

我在这里想念什么。据我从用户类型和joda了解的所有信息来看,我的配置是正确的。

最佳答案

我设法解决了这个问题。这是由于MySQL驱动程序中的错误所致。这是a link!我将驱动程序升级到版本mysql-connector-java-6.1.6。因为我使用databaseZone =“jvm”,所以必须通过在数据库属性中使用serverTimezone = UTC来强制数据库为UTC。您还必须使用属性setLegacyDatetimeCode = false才能使错误修复生效

关于jodatime - jadira用户类型joda时间从数据库返回了不正确的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15787686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com