通过hibernate来保持Joda时间的DateTime

我在我的Play应用程序中使用Jodatime,但目前不得不做一堆来回转换为java.util.Datejava.sql.Time

由于jodatime包含在Play分配中,所以我想可能有更好的方法来做到这一点。 有没有什么办法可以使我的模型字段DateTime s而不是java.util.Datejava.sql.Time所以转换是自动完成的? 还有另外一种精简的方法吗?

对于Hibernate 3,将以下注释添加到date字段中:

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

Hibernate现在会为你做这个肮脏的工作。

(确保你的类path中有joda-time-hibernate.jar )

更新:

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

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

(确保你的类path中有jadira-usertype-core.jar )

  1. Jodabuild议在Hibernate 4.0中使用UserType库,Hibernate 4.0是与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 

而不是把@Type注释放在你的每个Joda属性上,你可以把它添加到你的jpa属性中

 #Hibernate config jadira.usertype.autoRegisterUserTypes=true 

它应该工作得很好。

PS。 jadira-usertype-core.jar应该在你的类path中。

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

  • 编译(“乔达时间:乔达时间:2.8”)
  • 编译( “org.jadira.usertype:usertype.jodatime:2.0.1”)