通过hibernate来保持Joda时间的DateTime
我在我的Play应用程序中使用Jodatime,但目前不得不做一堆来回转换为java.util.Date
和java.sql.Time
。
由于jodatime包含在Play分配中,所以我想可能有更好的方法来做到这一点。 有没有什么办法可以使我的模型字段DateTime
s而不是java.util.Date
和java.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 )
-
Jodabuild议在Hibernate 4.0中使用UserType库,Hibernate 4.0是与Play 1.2.x捆绑在一起的Hibernate版本(参见http://joda-time.sourceforge.net/contrib/hibernate/index.html )。
-
处理依赖关系的正确方法是使用
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”)