![](/img/trans.png)
[英]Neo4j : Retrieving All Nodes and Relationship connected to a Node in Neo4j Rest OR through Cypher
[英]Error while retrieving neo4j node data through java
我通過talend將大約60k個節點加載到neo4j中。 我想通過java訪問這些節點。 Java代碼只能獲取neo4j本身附帶的單個節點,即第0個節點。
我的Java代碼是:
package com.Neo4J;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.naming.spi.DirStateFactory.Result;
import org.neo4j.cypher.javacompat.ExecutionEngine;
import org.neo4j.cypher.javacompat.ExecutionResult;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import org.neo4j.helpers.collection.IteratorUtil;
import org.neo4j.kernel.impl.util.FileUtils;
import org.neo4j.tooling.GlobalGraphOperations;
public class CaseNeo4J {
private static final String DB_PATH = "data/graph.db";
GraphDatabaseService graphDataService;
String nodeResult, resultString, columnsString;
String rows = "";
public static void main(String args[]) {
CaseNeo4J neoobj = new CaseNeo4J();
neoobj.connect();
}
void connect() {
graphDataService = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);
Transaction transaction = graphDataService.beginTx();
try {
ExecutionEngine engine = new ExecutionEngine(graphDataService);
ExecutionResult result = engine.execute("START n = node(0) return n");
System.out.println(result.dumpToString());
}
finally {
transaction.finish();
}
}
}
正如你在CQL中看到的那樣,我試圖退出節點(0),這給了我正確的結果
+-----------+
| n |
+-----------+
| Node[0]{} |
+-----------+
1 row
但是一旦我給出START n = node(1)這樣的查詢返回n它就會拋出錯誤 -
Exception in thread "main" org.neo4j.cypher.EntityNotFoundException: Node 1 not found
at org.neo4j.cypher.internal.spi.gdsimpl.GDSBackedQueryContext$$anon$1.getById(GDSBackedQueryC ontext.scala:80)
at org.neo4j.cypher.internal.spi.gdsimpl.GDSBackedQueryContext$$anon$1.getById(GDSBackedQueryC ontext.scala:48)
at org.neo4j.cypher.internal.executionplan.builders.NodeByIdBuilder$$anonfun$org$neo4j$cypher$ internal$executionplan$builders$NodeByIdBuilder$$f$1$1.apply(NodeByIdBuilder.scala:41)
at org.neo4j.cypher.internal.executionplan.builders.NodeByIdBuilder$$anonfun$org$neo4j$cypher$ internal$executionplan$builders$NodeByIdBuilder$$f$1$1.apply(NodeByIdBuilder.scala:41)
at org.neo4j.cypher.internal.executionplan.builders.GetGraphElements$.org$neo4j$cypher$interna l$executionplan$builders$GetGraphElements$$castElement$1(GetGraphElements.scala:30)
at org.neo4j.cypher.internal.executionplan.builders.GetGraphElements$$anonfun$getElements$3.ap ply(GetGraphElements.scala:40)
at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
at scala.collection.Iterator$$anon$13.next(Iterator.scala:372)
at org.neo4j.cypher.internal.ClosingIterator$$anonfun$next$1.apply(ClosingIterator.scala:44)
at org.neo4j.cypher.internal.ClosingIterator.failIfThrows(ClosingIterator.scala:86)
at org.neo4j.cypher.internal.ClosingIterator.next(ClosingIterator.scala:43)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at org.neo4j.cypher.internal.ClosingIterator.foreach(ClosingIterator.scala:31)
at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:178)
at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:45)
at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:259)
at org.neo4j.cypher.internal.ClosingIterator.to(ClosingIterator.scala:31)
at scala.collection.TraversableOnce$class.toList(TraversableOnce.scala:243)
at org.neo4j.cypher.internal.ClosingIterator.toList(ClosingIterator.scala:31)
at org.neo4j.cypher.PipeExecutionResult.eagerResult(PipeExecutionResult.scala:100)
at org.neo4j.cypher.PipeExecutionResult.dumpToString(PipeExecutionResult.scala:103)
at org.neo4j.cypher.PipeExecutionResult.dumpToString$lzycompute(PipeExecutionResult.scala:143)
at org.neo4j.cypher.PipeExecutionResult.dumpToString(PipeExecutionResult.scala:140)
at org.neo4j.cypher.javacompat.ExecutionResult.dumpToString(ExecutionResult.java:102)
at com.Neo4J.CaseNeo4J.connect(CaseNeo4J.java:45)
at com.Neo4J.CaseNeo4J.main(CaseNeo4J.java:32)
但是如果我運行START n = node(1)在neo4j shell的web UI中返回此查詢,它會給我正確的結果。
對此有什么想法嗎? 如果我在這里得到一些解決方案,我將非常感激。 謝謝!
您確定要使用與neo4j服務器實例和talend使用的DB_PATH相同的數據位置嗎? 你能檢查絕對路徑嗎? AFAIK在沒有數據的路徑上啟動嵌入式數據庫實例時,會從頭開始創建一個空數據集,該數據集只包含一個id為0的根節點。
能夠解決這一挑戰。 提及完整的DB_PATH。 謝謝所有給我時間的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.