2011-10-17 8 views
3

Grails/GroovyクラスのTimeDurationを使ってgrailsアプリケーションを起動するときに例外が発生します。Grails/groovyドメインクラスのTimeDurationのHibernateタイプを修正しますか?

org.hibernate.MappingException: Could not determine type for: groovy.time.TimeDuration 

ドメインクラスでの使用

私はタイプを定義する必要があります
import groovy.time.TimeDuration 
class Result { 
    TimeDuration overall 
} 

+0

間接回答:[joda plugin](http://grails.org/plugin/joda-time)をインストールし、Joda [Durations](http://joda-time.sourceforge.net/apidocs/org/)を使用します。 joda/time/Duration.html)。プラグインはユーザータイプを自動的にマップします。 –

+0

私は以前これについて考えましたが、最初はそれを試してみたかったのです。再び注目してくれてありがとう! – skurt

+0

問題ありません。私が見てきたことから、フィールドを正しく維持するためにおそらくあなた自身のUserTypeを書く必要があるようです。 –

答えて

3

あなたGrailsを使っているので、それはおそらく、より便利になりますJoda Time pluginとそのDurationタイプを使用して値を保存します。

プラグインをインストールすると、多くのライブラリのタイプ(Durationを含む)に対してHibernateのマッピングが提供されます。

GroovyのTimeDurationに続ければ、自分でUserTypeと書く必要があります。私はいくつかの検索の後に1つも見つからなかった。

0

Dateを試してみてください。これは、dbの日付タイプにデフォルトのタイムスタンプを使用します。必要に応じて、hbmファイル/注釈を使用して、日付フィールドの他のフォーマットでhibernateを具体的に設定できます。

+0

使用 '静的マッピング= { \t \tは、全体的なタイプ:「日」 }' DBにおける結果Date型を使用して、これがエラー をもたらす 'groovy.time.TimeDurationはjava.util.Date'にキャストすることはできません 'timestamp'を使用しても同様のエラーが発生します。 – skurt

0
import groovy.time.TimeDuration 

class Result { 
    Date overall 
} 

あなたは、日付と時刻を格納するため、この日のタイプを使用することができ、そしてこの日付と時刻が休止状態でタイムスタンプにマップされます。..

+1

日付/時間に30分のような時間がどのように保存されるのかわかりません。 – skurt

関連する問題