2016-06-20 4 views
0

を保存していない私は、私が検証した後、などの保存Grailsのドメインオブジェクトを持っています。しかし、printlnを呼び出すと、オブジェクトは保存されていないと表示されます。しかし、データベースをチェックすると、実際には永続化されています。 Grailsが私にそれが保存されていないと言っている理由を私が確認できる何かがありますか? grailsのバージョンは3.0.9です。Grailsのドメインインスタンス

さらにテストした後は、ドメインマッピングでキーを指定する方法と関連があるように見えます。

static mapping = { 
    version false 
    autoTimestamp false 
    id name:'foo_id', generator:'increment' 
} 

idフィールドを削除し、デフォルトでGrailsにそれを処理させると、オブジェクトは正しく保存されます。 idフィールドを追加すると、上記の問題が発生します。理由はありますか?

+0

を試すようにその持続性が成功確認することができますかGrailsのどのバージョン?関数@トランザクションですか? –

+0

トランザクションをコミットした後にステータスが変化しますか? –

+0

これはgrails 3.0.9です。この関数は@Transactionalでしたが、すべてのトランザクション部分を削除して同じ問題があります。 – Lithium

答えて

0

私はtoString()のフォーマットについてあまり気にしません。 savefailOnError: trueと呼んでいるので、永続性が失われた場合に例外がスローされると想定すると安全です。この引数を指定しない場合、あなたはとても

if (foo.save()) { 
    println 'it worked' 
} else { 
    println 'if failed' 
} 
+0

後でこの部分を更新する際に問題が発生したため、私は心配していました。既存のものを更新するのではなく、新しいインスタンスを作成しようとしましたが、おそらくこれが問題の一部であったと思いました。しかし、saveメソッドは本当にtrueを返します。 – Lithium

0

は、あなたがそれをデバッグまたはちょうどのprintlnでチェックしましたか?

foo = foo.save flush:true, failOnError:true 

println(foo) 
+1

詳細を編集してください。コード専用と「試してください」の回答は、検索可能なコンテンツが含まれていないため、推奨されません。なぜ誰かが「これを試してみる」べき理由を説明しません。私たちはここで知識のためのリソースとなるよう努力しています。 –