ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

如何集成Joda-Time和Hibernate 4 / MySQL 5?

2019-06-21 00:01:50  阅读:306  来源: 互联网

标签:mysql hibernate jodatime usertype


我一直想把我们的申请转移到Joda-Time.有几个挂断……

1-对于Hibernate 4.x应用程序来说,正式的Joda-Time集成here似乎已经过时了

2 – 建议的备选方案here似乎没有文档/入门信息.

3-I找不到我的数据库中哪些类型(MySql 5.5.11)很好地映射到Joda-Time等价物的好参考.

有没有人知道如何处理这些?

解决方法:

我使用您链接到的Jadira UserType库取得了一些成功.
在您的hibernate映射配置中,您可以通过将org.jadira.usertype.dateandtime.joda.PersistentDateTime类指定为’type’,将Joda DateTime属性映射到MySQL DATETIME或TIMESTAMP列.例如:

<class name="DateTestEntity" table="DATE_TEST">
    <id name="id" column="ID">
        <generator class="native" />
    </id>

    ...

    <property name="dateOfBirth" type="org.jadira.usertype.dateandtime.joda.PersistentDateTime" column="DATE_OF_BIRTH" />
</class>

我不确定其他MySQL和Joda-Time类型之间的映射,但是these Javadocs列出了可用于映射配置的类.

这就是您开始使用所需的一切.但是,关于时区,您需要考虑以下几点:

>我链接的Javadoc中列出的许多映射类都有
‘本地’等价物;例如PersistentLocalDateTime for
PersistentDateTime.
>在考虑时区时,UserType使用两个属性:jadira.usertype.databaseZone& jadira.usertype.javaZone. (看看this questionthis question,看看它们可以在哪里设置.)我不知道它们之间有什么区别,但是数据库区域似乎是最重要的一个,正如this question所示.

在我正在开发的项目中,我们希望以UTC(即GMT)存储所有日期,并且只在将它们显示给用户时将它们更改为特定的时区.到目前为止,我们在以下设置中没有遇到任何问题:

> MySQL服务器(以及我们的开发机器上的所有MySQL实例)已配置为使用UTC时区
>我们在Hibernate配置文件中使用PersistentDateTime而不是PersistentLocalDateTime
> jadira.usertype.databaseZone& jadira.usertype.javaZone都设置为UTC

如果您的应用程序需要处理国际日期,那么我建议您执行相同操作,或者尝试使用上述设置,直到您对应用程序的行为正确感到满意为止.

标签:mysql,hibernate,jodatime,usertype
来源: https://codeday.me/bug/20190620/1249526.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有