2

spring-data と CXF を組み合わせて、neo4j ノードを作成する RESTful エンドポイントを作成しています。私の構造は、パブリックに面したメソッドを定義する一連のインターフェイスであり、その下にいくつかのプライベート メソッドを持つ私の実装は、パブリック メソッドによって呼び出されます。

私のプライベート メソッドには spring-tx が@Transactionalあり、パブリック メソッドからこれらを呼び出そうとすると、org.neo4j.graphdb.NotInTransactionException. 以下は、私の構成を表示するようにセットアップされた GitHub プロジェクトです。これを実行して、何が問題なのかを確認することもできます。

https://github.com/NicholasAStuart/broken-spring-neo4j-cxf.git

誰でも私を助けることができますか?spring-data-neo4j のドキュメントの手順に従いましたが、これを機能させることができないようです。誰か助けてもらえますか?

4

2 に答える 2

3

アノテーションはプライベート メソッドでは@Transactional機能しません。

のドキュメントから:

プロキシを使用する場合は、@Transactional アノテーションを public な可視性を持つメソッドにのみ適用する必要があります。@Transactional アノテーションを使用して、保護されたプライベート メソッドまたはパッケージ可視メソッドにアノテーションを付けた場合、エラーは発生しませんが、アノテーションが付けられたメソッドは、構成されたトランザクション設定を示しません。非公開メソッドに注釈を付ける必要がある場合は、AspectJ (以下を参照) の使用を検討してください。

モードを使用して、aspectj任意のタイプのメソッドでこの動作を有効にできる場合があります。

于 2013-01-29T03:55:08.003 に答える
0

春のマニュアルの第11.5.6章の蛍光ペンとして:

メソッドの可視性と @Transactional

プロキシを使用する場合は、@Transactional アノテーションを public な可視性を持つメソッドにのみ適用する必要があります。@Transactional アノテーションを使用して、保護されたプライベート メソッドまたはパッケージ可視メソッドにアノテーションを付けた場合、エラーは発生しませんが、アノテーションが付けられたメソッドは、構成されたトランザクション設定を示しません。非公開メソッドに注釈を付ける必要がある場合は、AspectJ (以下を参照) の使用を検討してください。

于 2013-01-29T03:57:25.110 に答える