5

grailsで代替データソースを使用してトランザクションを開く方法を理解しようとしています。次のデータソースを定義しています...

dataSource {
    dbCreate = "update"
    url = "jdbc:h2:mem:testDb;MVCC=TRUE"
}

dataSource_ALT {
   dbCreate = "update"
   url = "jdbc:h2:mem:altDb;MVCC=TRUE"
}

デフォルトのdataSourceでこれを行うことができます...

Foo.withTransaction { status ->
    //...
}

しかし、ALT dataSourceでそれを実行しようとすると、例外が発生します-'transactionManagerBeanが構成されていません'...

Foo.ALT.withTransaction { status ->
   //...
}

別のデータソースを使用してトランザクションを開始する方法はありますか?私はいくつか掘り下げてみましたが、あまり見つけることができませんでした。

ありがとう!

4

1 に答える 1

0

@Raphael あなたの提案は機能します。次のステップに進み、トランザクション マネージャーを割り当てることで withTransaction を機能させることができました。それらは作成されているように見えますが、添付されていません。これらは、transactionManager_ALT のような名前の Spring Bean として存在します (この例では)。実際にそれらを作成するものと、それらが GormStaticApi に接続されていない理由がわかりません。

つまり、ここでは次のようにします。

Foo["ALT"].transactionManager = transactionManager_ALT

おそらく、1 つのドメイン クラスを選択して、すべての異なるトランザクション マネージャーを割り当てようとし、それが機能するかどうかを確認してから、その 1 つのドメイン クラスをあらゆる場所で使用してトランザクションを開始します。

于 2012-08-17T01:58:10.463 に答える