PlayアプリでJodatimeを使用していますが、現在Java.util.Date
とJava.sql.Time
の間で相互に変換する必要があります。
JodatimeはPlayディストリビューションに含まれているので、これを行うにはもっと良い方法があると思います。モデルフィールドをJava.util.Date
およびJava.sql.Time
の代わりにDateTime
sにする方法はありますか?変換は自動的に行われますか?これを合理化する別の方法はありますか?
Hibernate 3の場合、次の注釈を日付フィールドに追加します。
@Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
Hibernateはこれであなたのために汚い仕事をします。
(クラスパスに joda-time-hibernate.jar があることを確認してください)
UPDATE:
Hibernate 4および5の場合、次の注釈を追加します。
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
(クラスパスに jadira-usertype-core.jar があることを確認してください)
Jodaは、Play 1.2.xにバンドルされているHibernateのバージョンであるHibernate 4.0でUserTypeライブラリを使用することを推奨しています(参照: http://joda-time.sourceforge.net/contrib/hibernate/index.html )。
依存関係を処理する適切な方法は、dependencies.yml
ファイル。次のような行が含まれます。
- org.jadira.usertype -> usertype.jodatime 2.0.1
Jodaプロパティのそれぞれに@Type
注釈を付ける代わりに、これをjpaプロパティに追加できます
#Hibernate config
jadira.usertype.autoRegisterUserTypes=true
そしてそれはうまく動作するはずです。
ps。jadira-usertype-core.jar はクラスパスにある必要があります。
Hibernate 4プロジェクトで2つのjarを有効にする必要があります。