我能够在Neo4j数据库上通过Java创建节点和关系。当我尝试在下次运行中访问创建的节点时,我收到此错误:
Exception in thread "main" org.neo4j.graphdb.NotFoundException: Node 27 not found
在webadmin界面中,仪表板显示通过Java创建的节点/关系的数量,但是当我发出此查询时:START n = node(*)RETURN n;我在输出中只得到一个节点。
(仅供参考我在我的Windows机器(本地)中安装了Ne04j,并使用嵌入式数据库java代码创建节点。) 我用来连接db的Java代码:
final String dbpath = "C:\\neo4j-community-1.9.4\\data\\graph.db";
GraphDatabaseService graphdb = new GraphDatabaseFactory().newEmbeddedDatabase(dbpath);
我在ne04j-server.properties中使用的设置是:
org.neo4j.server.database.location=/C:/neo4j-community-1.9.4/data/graph.db/
org.neo4j.server.webserver.https.keystore.location=data/keystore
org.neo4j.server.webadmin.rrdb.location=data/rrd
org.neo4j.server.webadmin.data.uri=/C:/neo4j-community-1.9.4/data/graph.db/
org.neo4j.server.webadmin.management.uri=/db/manage/
当我通过Java创建节点时,数据/密钥库文件不会被填充,只有在通过webadmin接口创建节点时才会填充。将密钥库文件的路径更改为绝对路径也没有工作
任何人都可以在这种情况下指出错误,谢谢。
答案 0 :(得分:2)
问题是创建的节点未提交。要提交节点,我们必须提供完成():
try{
Transaction tx = graphdb.beginTx();
final String dbpath = "/C:/neo4j-community-1.9.4/data/graph.db/";
GraphDatabaseService graphdb = new GraphDatabaseFactory().newEmbeddedDatabase(dbpath);
Node n1 = graphdb.createNode();
n1.setProperty("type", "company");
n1.setProperty("location", "india");
....
...
}} catch(Exception e){
tx.failure();
} finally {
tx.success();
**tx.finish();**
}
答案 1 :(得分:1)
Ranjith的答案直到最近都是正确的,但tx.finish()现已被弃用。
tx.close(); 现在是提交或回滚事务的正确方法 - 它将执行一个或另一个,具体取决于您之前是否已调用tx.success()
他们对此进行了更改,因此在使用资源块进行尝试时,事务可以自动关闭。
答案 2 :(得分:0)
你试过了吗?
String dbpath = "C:/neo4j-community-1.9.4/data/graph.db";