2012-01-29 9 views
12

Grails 2.0に移行したばかりのGrails 1.3.7を使用していたアプリケーションがあります。アプリケーションでは、自動dateCreatedおよびlastUpdatedフィールドを使用して、オブジェクトの作成および変更に関連するタイムスタンプを管理します。アップグレードした後、私は次のエラーを取得する:私のドメインクラスでは、上記のフィールドをコメントアウトdateCreated、lastUpdatedフィールドのGrails 2.0

| Running Grails application 
| Error 2012-01-29 22:36:53,504 [Thread-8] ERROR util.JDBCExceptionReporter - ERROR: null value in column "date_created" violates not-null constraint 
| Error 2012-01-29 22:36:53,510 [Thread-8] ERROR events.PatchedDefaultFlushEventListener - Could not synchronize database state with session 

は、問題が離れて行くことができます。

Grails 2.0ではdateCreatedlastUpdatedのフィールドが廃止されましたか?もしそうなら、私はこの機能を手動で処理するためのコードを書かなければならないか、コードはaudit-trailプラグインのような何らかのプラグインに移動されましたか?

答えて

17

[OK]を、手動でautoTimestampの可変ドメインクラス定義における「真」に設定することで、それを修正:私は、このプロパティを推測

static mapping = { 
     autoTimestamp true 
} 

をGrails 1.3.7から2.0.0にプロジェクトを移行した後には設定されません。

+0

ありがとうございました! grails 2.2.0が私がドメインクラスで設定していた値を上書きしていたので、私は問題に遭遇しました。 Grailsによって追加されたtimeStampはシステムクロックに依存します。 – tusar

+0

autoTimestampプロパティをfalseに設定して自動オーバーライドを修正しました – tusar

+0

これは統合テストでは機能しません – codewandler

6

まだGrails 2.0では自動タイムスタンプがサポートされています。 It's listed in the manual (scroll up a bit from this link)

しかし、それは特に言及:

If you put nullable: false constraints on either dateCreated or lastUpdated , your domain instances will fail validation - probably not what you want. Leave constraints off these properties unless you have disabled automatic timestamping.

+0

投稿したリンクはhttp:// localhost /〜phil /にあります。あなたは間違ったリンクを入れましたか? – srkiNZ84

+0

いずれのフィールドも制約内で全く言及されていません。引用されたテキストに基づいて、私は何らかの形で「自動タイムスタンプ」を無効にしている可能性があると考え始めています。そのテキストはどこから手に入れましたか? – srkiNZ84

+0

申し訳ありませんが、私はオフラインコピーを閲覧していました。リンクが修正されました。警告メッセージはリンク先ページにあります。私は直接リンクすることができないので、リンクから*** UP ***をスクロールする必要があります。 – OverZealous

3

Grails 2.0.3には、Postgresを使用しているときにこの問題を引き起こすバグがあります。 http://jira.grails.org/browse/GRAILS-8988を参照してください。この問題は、2.0.4がリリースされたときに解決すると述べています。

関連する問題