0

ここに私のコードがあります:

 OrientVertex luca = graph.addVertex(null);
 luca.setProperty("name", "John" + Integer.toString(i));

 OrientVertex marko = graph.addVertex(null);
 marko.setProperty("name", "Van Ness Ave." + Integer.toString(i + 1));

 OrientEdge lucaKnowsMarko = graph.addEdge(null, luca, marko, "knows");
 graph.commit();

これは同じスナップショットです。

そして、次の警告が表示されました。

警告: コマンド「create edge type 'knows' as subclass of 'E''」は、アクティブなトランザクションの外部で実行する必要があります。トランザクションはコミットされ、その後すぐに再開されます。この動作を回避するには、トランザクションの外で実行します (db=test)

この問題をグーグルで調べると、この質問は非トランザクションおよびトランザクション データベース操作に関連しているようです。

4

1 に答える 1

2

スキーマレスで作業しているため、OrientDB は頂点/エッジを初めて作成するときにクラスを作成します。この場合は、Edge クラスが「知っている」ためのものでした。これは、最初に、またはトランザクションの範囲外でクラスを作成することで回避できます。コードの前にこれを一度だけ実行してみてください:

OrientGraphNoTx graph = new OrientGraphNoTx(url);
graph.createEdgeType("knows");
graph.shutdown();
于 2016-03-25T17:44:24.630 に答える