1
一部开拓创新POSTNeo4J意外关机或配置错误?
让我开始与我的代码。这是出现错误的代码片段。
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.arch[email protected]bed5ea
INFO: USERNODE = Node[241]
INFO: TRAVERSER1 = [email protected]
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()){
我已经检查过每一个空值的东西,并找不到任何东西。如果有人能帮助我,将不胜感激。
编辑
我用这个方法来显示树藏在我的图表。我知道这个方法可行,因为我可以看到我的图表。
只是在我使用tinkerpop蓝图中的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);
我必须做任何一个这两个或我的节点将不commomited。为了一个特定的原因,我必须使用蓝图添加它们。
我怀疑它是与此,因为它只是我做这之后会发生......
我知道如何将属性文件附加到我的嵌入式Neo4J,但atm我使用从GraphDatabaseFactory获得的默认配置。我需要在我的属性文件中包含哪些其他设置,以便您提供的两个设置是唯一可以更改的设置... – 2013-03-01 10:56:35
我添加了cache_classes = true,但它没有帮助。我认为线程安全!只是为了创业? 我在原始帖子中增加了一些内容,可能会对情况有所了解。 – 2013-03-01 11:33:21
好的。所以你实际上正在关闭数据库。这解释了Neo4j ReadTranscation类中产生的NPE。我担心stopTransaction会导致类似的问题。 如果只是提交你的节点 - 你是否尝试以下操作:neo4jgraph.setTransactionMode(TransactionalGraph.Mode。自动); – elToro 2013-03-01 12:22:39