0

mongoDB grails プラグインを使用して、いくつかのドメイン クラスを MongoDB に入れようとしています。一部のクラスは MySQL に残ります。ドメイン クラス インスタンスを MongoDB に保存する場合でも、すべて正常に動作します (たとえば、コントローラー コードのサービス中)。ただし、特定の not-mongoDB クラスの afterUpdate() からインスタンスを保存しようとすると、機能しません。例外などはスローしません...

私のnot-mongoDBドメインクラス:

class CarState extends AbstractCarState {

   ...

   def afterUpdate() {
      def logItemInstance = new CarStateLogItem(this.properties)
      logItemInstance.save(failOnError: true)
   }
}

MongoDB ドメイン クラス:

class CarStateLogItem extends AbstractCarState {
   ObjectId id

   static mapWith = "mongo"

   ...
}

奇妙なことに、コントローラから afterUpdate() コードを実行すると、MongoDB に保存されます。私は何かが足りないのですか?または、インスタンスを保存できないのはなぜですか?

アドバイスありがとう、マテオ

4

1 に答える 1

1

transactionmongodbに保存するには、新しいものを開始する必要があると思います。気づけば の取引はCarStateになりますMySQLmongodbイベントからトランザクションを行うafterUpdateには、新しい mongodb トランザクションが必要です。これを試して。

def afterUpdate() {
   CarStateLogItem.withTransaction{status ->
       def logItemInstance = new CarStateLogItem(this.properties)
       logItemInstance.save(failOnError: true)
   }
}
于 2013-05-21T13:33:23.330 に答える