2016-12-17 5 views
1

私はGrails 2.2.1のプロジェクトに「質問」という名前のドメインがあります。このドメイン内では、beforeinsert()は現在、次のようになります。アトリビュートの値はbeforeInsert()内で更新できません

def beforeInsert() { 
    dateCreated = new Date() 
    dateModified = new Date() 
} 

は、私は、この値は、コントローラから渡されていない場合には、そのまま許可されている場合dateCreatedを更新したいです。ここに私の修正だが、残念ながらそのが動作していない:

def beforeInsert() { 
    dateCreated = dateCreated ? dateCreated : new Date() 
    println dateCreated 
    dateModified = new Date() 
} 

printlnのプリントは、データがデータベースに挿入さdateCreated値を、更新されていても、dateCreatedフィールドには、現在のタイムスタンプの値を毎回取得します。任意のヘルプをいただきありがとうございます。

+0

あなたのドメインの 'mappings'部分を投稿してください。 –

+0

まだ何もマッピングされていません – towfiqpiash

答えて

0

dateCreatedが自動的に設定されている理由は、デフォルトの動作がautoTimestampのためです。デフォルトでは、ドメインクラスにプロパティdateCreatedが存在する場合、Grailsはこの値を設定します。

次のようなこのデフォルトの動作を無効にすることができます

class Book { 
    … 
    static mapping = { 
     autoTimestamp false 
    } 
} 

あなたにもdocumentationをチェックアウトすることができます。

+0

ありがとうございました。条件に基づいてautoTimestamp値を設定できる方法はありますか?同様に、私は手動でdateCreated値 – towfiqpiash

+0

を提供したときにのみautoTimestampをfalseにします。あなたは 'beforeInsert'コードと' autoTimestamp'を無効にしてみましたか?それはあなたが望むものを達成するはずです。 –

+0

問題が解決しました!男、あなたは私のヒーローです:) – towfiqpiash

関連する問題