1

元の投稿

私のコードから始めましょう。これは、エラーが表示されるコードのフラグメントです。

DatabaseModuleInterface dbModule = new DatabaseModuleImpl();
System.out.println(dbModule.getDb());
Traverser t = dbModule.getGraphTree(usernode);

System.out.println("DBMODULE = " + dbModule.toString());
System.out.println("USERNODE = " + usernode);
System.out.println("TRAVERSER1 = " + dbModule.getGraphTree(usernode));

    System.out.println("T IS NOT NULL");
    if (t.nodes() != null) {
        System.out.println("T NODES IS NOT NULL");
        for (Node node : t.nodes()) {
            if (node != null) {
                System.out.println("NODE IS NOT NULL");
            } else {
                System.out.println("NODE IS NULL");
            }
        }
    }

どちらが

INFO: EmbeddedGraphDatabase [C:\impactordb]
INFO: DBMODULE = be.archimiddle.impactor.modules.database.interfaces.DatabaseModuleImpl@bed5ea
INFO: USERNODE = Node[241]
INFO: TRAVERSER1 = org.neo4j.kernel.impl.traversal.TraverserImpl@ce2016
INFO: T IS NOT NULL
INFO: T NODES IS NOT NULL

そして、次のスタックトレースでエラーが発生します

java.lang.NullPointerException
at org.neo4j.kernel.impl.nioneo.xa.ReadTransaction.nodeLoadLight(ReadTransaction.java:86)
at org.neo4j.kernel.impl.persistence.PersistenceManager.loadLightNode(PersistenceManager.java:82)
at org.neo4j.kernel.impl.core.NodeManager.getLightNode(NodeManager.java:423)
at org.neo4j.kernel.impl.core.NodeManager.getNodeForProxy(NodeManager.java:440)
at org.neo4j.kernel.InternalAbstractGraphDatabase$4.lookup(InternalAbstractGraphDatabase.java:660)
at org.neo4j.kernel.impl.core.NodeProxy.getRelationships(NodeProxy.java:98)
at org.neo4j.kernel.StandardExpander$RegularExpander.doExpand(StandardExpander.java:579)
at org.neo4j.kernel.StandardExpander$RelationshipExpansion.iterator(StandardExpander.java:194)
at org.neo4j.kernel.impl.traversal.TraversalBranchWithState.expandRelationshipsWithoutChecks(TraversalBranchWithState.java:78)
at org.neo4j.kernel.impl.traversal.TraversalBranchImpl.expandRelationships(TraversalBranchImpl.java:104)
at org.neo4j.kernel.impl.traversal.StartNodeTraversalBranch.next(StartNodeTraversalBranch.java:46)
at org.neo4j.kernel.impl.traversal.AsOneStartBranch.next(AsOneStartBranch.java:100)
at org.neo4j.kernel.PreorderDepthFirstSelector.next(PreorderDepthFirstSelector.java:52)
at org.neo4j.kernel.impl.traversal.TraverserIterator.fetchNextOrNull(TraverserIterator.java:64)
at org.neo4j.kernel.impl.traversal.TraverserIterator.fetchNextOrNull(TraverserIterator.java:33)
at org.neo4j.helpers.collection.PrefetchingIterator.hasNext(PrefetchingIterator.java:55)
at org.neo4j.helpers.collection.IteratorWrapper.hasNext(IteratorWrapper.java:42)
at com.archimiddle.impactor.action.navigation.ViewGraphAction.getGraphTree(ViewGraphAction.java:107)

この行#107は、スニペットの次の行です。

for(Node node : t.nodes()){

すべてのnull値を確認しましたが、何も見つかりませんでした。誰かが私を助けてくれるなら、それは大いにありがたいです。

編集

このメソッドを使用して、グラフに隠されたツリーを表示します。グラフが見えるので、この方法が機能することはわかっています。

ティンカーポップブループリントからNeo4jgraphを使用してノードを追加した後、このメソッドを使用してグラフを表示できなくなったのはそれだけです。Gremlinが実際にノードをNeo4Jグラフに追加するには、ノードがコミットされる前に、shutdownまたはstopTransactionのいずれかを呼び出す必要があります。

Neo4jgraph graph = new Neo4jGraph(my_graphdatabaseservice);
//ADD NODES HERE
//I USED TO DO THIS
neo4jgraph.shutdown();
//NOW I DO THIS
neo4jgraph.stopTransaction(Conclusion.SUCCESS);

これら2つのいずれかを実行する必要があります。そうしないと、ノードがコミットされません。そして、私は非常に特別な理由でブループリントを使用してそれらを追加する必要があります。

私がこれをした後にのみ起こるので、私はそれがこれと関係があるのではないかと疑っています...

4

1 に答える 1

0

この問題は、投稿したコード スニペットとは関係ありません。すべてが正常に機能しています。

問題は、neo4j の実装にあります。

次のパラメーターを neo4j 構成に追加してみてください

  • config.cache_classes = true
  • config.threadsafe!
于 2013-03-01T10:34:12.580 に答える