通过Hibernate坚持Joda-time的DateTime

时间:2011-06-08 19:26:43

标签: hibernate jodatime

我在我的Play应用中使用Jodatime,但目前不得不在java.util.Datejava.sql.Time之间来回转换。

由于jodatime包含在Play发行版中,我认为可能有更好的方法来实现这一点。有什么方法可以让我的模型字段DateTime而不是java.util.Datejava.sql.Time,所以转换是自动完成的吗?还有另一种简化方法吗?

4 个答案:

答案 0 :(得分:51)

对于Hibernate 3,在日期字段中添加以下注释:

@Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")

Hibernate现在会为你做脏事。

(确保您的类路径中有joda-time-hibernate.jar

<强>更新

对于Hibernate 4和5,添加以下注释:

@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")

(确保您的类路径中有jadira-usertype-core.jar

答案 1 :(得分:10)

  1. Joda建议将UserType库与Hibernate 4.0一起使用,Hibernate是与Play 1.2.x捆绑在一起的Hibernate版本(参见:http://joda-time.sourceforge.net/contrib/hibernate/index.html)。

  2. 处理依赖关系的正确方法是使用dependencies.yml文件,包括如下所示的行:

    - org.jadira.usertype -> usertype.jodatime 2.0.1
    

答案 2 :(得分:7)

您可以在jpa属性中添加@Type注释,而不是在每个Joda属性中添加#Hibernate config jadira.usertype.autoRegisterUserTypes=true 注释

EntryRemoved

它应该可以正常工作。

ps。 jadira-usertype-core.jar应该在您的类路径中。

答案 3 :(得分:0)

我们应该在Hibernate 4项目中启用两个jar:

  • 编译(“joda-time:joda-time:2.8”)
  • 编译( “org.jadira.usertype:usertype.jodatime:2.0.1”)