我在我的Play应用中使用Jodatime,但目前不得不在java.util.Date
和java.sql.Time
之间来回转换。
由于jodatime包含在Play发行版中,我认为可能有更好的方法来实现这一点。有什么方法可以让我的模型字段DateTime
而不是java.util.Date
和java.sql.Time
,所以转换是自动完成的吗?还有另一种简化方法吗?
答案 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)
Joda建议将UserType库与Hibernate 4.0一起使用,Hibernate是与Play 1.2.x捆绑在一起的Hibernate版本(参见:http://joda-time.sourceforge.net/contrib/hibernate/index.html)。
处理依赖关系的正确方法是使用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: