2017-02-15 4 views
0

example templateを使用してユーザー定義プロシージャーを実装しました。neo4j:ユーザー定義のプロシージャー例外 "READ`トランザクションで書き込み操作が許可されていません

"@Procedure(value =" foo.bar "、mode = Mode.WRITE)"を使用してプロシージャに注釈を付けますが、グラフを変更するノードインスタンスで操作を実行しようとすると失敗します"READトランザクションの書き込み操作は許可されていません"。

ノードインスタンスがdb.findNode(...)、及びIを実行しようとしています書き込み操作を介して得られたnodeinstance.createRelationshipTo(...)である

興味深いことに、 neo4jテストハーネスのコンテキストで実行すると、コードは正常に動作します。

大変助かりました!

+0

プロシージャ内でトランザクションを開いていますか? –

+0

はい、コード行は "try(Transaction tx = db.beginTx()){"、例のプロシージャと同じです。 興味深いことに、テストのコンテキストで実行すると、コードは正常に動作します。 –

+0

どのように手続きを呼び出していますか? (neo4jブラウザから、javaドライバなどを使用していますか?) –

答えて

1

APOCのユーザー定義の手順を調べることで、私はその答えを学びました。私はneo4j 3.0.7を使用しています。3.0.xでは、グラフに書きたいプロシージャに "@PerformsWrites"と "@Procedure"という注釈を付ける必要があります。モード引数 "、mode = Mode.WRITE"は3.1、 "@PerformsWrites"は3.0.xです - これをStefan Armbrusterから学んだ

関連する問題