2017-12-12 4 views
0

マニングの書籍「Grails in Actions」を読んでいて、次の問題があります。これらは例を示しています。データモデルオブジェクトがある場合は、grailsコンソール全体でそのインスタンスを作成できます。私はそれを始める、私はそれを作成します。それはインスタンスが作成されていると言いますが、DBを振り返ると、Quoteテーブルは空でインスタンスはありません。コンソールがデータモデルを見つけたので、それは変です。これらのレコードがどこに行き、なぜデータベースに書き込まれていないのですか?Grails 3コンソールでデータベースにオブジェクトインスタンスが作成されていません

ScreenShot

ドメイン・モデルは次のとおりです。

package qotd 

class Quote { 
    String content 
    String author 
    Date created = new Date() 

    static constraints = { 
    } 
} 
+0

外で仕事をしている場合'フラッシュ? '.save(flush:true)'であれば、 'flush'を使用しない限り、文書を保存する必要があります。[link](https://docs.grails.org/latest/ref/Domain%20Classes/save。 html)grails doc – fsi

+0

もう一度動かない...非常に奇妙な – VoodooMachinery

答えて

0

あり、いくつかここで起きている可能性があり、物事:

  • 検証エラーがないことを確認し

制約は、yo定義されていない場合は、以下のコードでコンソールでこれをすぐに確認できますが、実動では検証エラーをチェックします。トランザクション内

quote.save(failOnError: true) // only for testing 
  • 実行(Do)データベース作業は

ベストプラクティスは@Transnationalサービスでこのロジックを持っているでしょう - あなたが使用することについてどのようにトランザクションを使用

Quote.withTransaction { ...().save() } 
+0

スクリーンショットから、彼は作成者オブジェクトを作成していないようだ。 – fsi

+0

スクリーンショットでは、著者テーブルがないので、それは単なる文字列である可能性が高い。データモデルは示されていません。 – erichelgeson

+0

データモデルコードをアップロードしましたが、それはトランザクションでも機能しません – VoodooMachinery

関連する問題