0

ドメインオブジェクトでは、これが私のデータ構造と制約ブロックの関連するスニペットです

Date printed

static constraints =
{
    printed (Display:false, nullable:true)      
}

そして、私はこのメソッドを書きました

def resetPrinted()
{
    printed = null
    save()
}

そのメソッドを実行すると、printednull ではなく現在の日付に設定されます。

この問題についてかなりの数の人が不満を言っているのを見つけましたが、実際の解決策はまだ見つけていません. これまでに見つけたものは次のとおりです。

http://jira.grails.org/browse/GRAILS-6943

http://grails.1312388.n4.nabble.com/Grails-1-3-4-won-t-accept-null-dates-td2322178.html

http://java.dzone.com/tips/null-value-save-issue-grails

http://jira.grails.org/browse/GRAILS-7189

Grails 2.2.4 を使用しています。これが 2.3.0 で何らかの形で修正されている場合は、アップグレードしますが、それ以外の場合はむしろしたくありません。

4

1 に答える 1

0

beforeUpdate()を呼び出しているメソッドの存在に気付いていなかったことがわかりsetStatusDate()ました。これらは、そのメソッドの関連セクションです。

def setStatusDate()
{
    def now = new Date()
    ...
    else if(status == Status.PRINTED)
        printed = now
    ...
}

そのため、 nullresetPrinted()に設定していましたが、更新が発生する直前beforeUpdate()にトリガーされ、 が呼び出されsetStatusDate()、 に戻されましたnow

結論: データがうまくいかない場合は、次のメソッドの存在を確認してくださいbeforeInsert, beforeUpdate, beforeDelete, beforeValidate, afterInsert, afterUpdate, afterDelete,onLoad

于 2013-10-04T01:20:27.637 に答える