我是neo4j的新手,我正在努力学习,
我有以下用于在neo4j中创建节点的java代码,然后我在java中读取了创建节点的属性名称,我的代码如下:
String DB_PATH = "C:/hamed";
public static void main( String[] args )
{
JavaQuery javaQuery = new JavaQuery();
javaQuery.run();
}
void run()
{
// START SNIPPET: addData
GraphDatabaseService db = new GraphDatabaseFactory().newEmbeddedDatabase( DB_PATH );
db.beginTx();
try ( Transaction tx = db.beginTx(); )
{
Node myNode = db.createNode();
myNode.addLabel( DynamicLabel.label( "11" ) );
myNode.setProperty( "name", "qq" );
tx.success();
}
// END SNIPPET: addData
// START SNIPPET: execute
ExecutionEngine engine = new ExecutionEngine( db );
ExecutionResult result;
try ( Transaction ignored = db.beginTx() )
{
result = engine.execute( "match (n) return n, n.name" );
// END SNIPPET: execute
// START SNIPPET: items
Iterator<Node> n_column = result.columnAs( "n" );
for ( Node node : IteratorUtil.asIterable( n_column ) )
{
// note: we're grabbing the name property from the node,
// not from the n.name in this case.
nodeResult = node + ": " + node.getProperty( "name" );
System.out.println("ss : "+nodeResult);
}
// END SNIPPET: items
db.shutdown();
}
和system.out ...打印ss:节点1:qq这是好的,
现在我运行neo4j如下:
然后我转到这个链接:
http://localhost:7474/webadmin/
然后当我编写查询以检查节点时,没有任何返回:
但我希望看到一个名为property qq
的节点 谁能帮助我吗?我做错了什么?更新
我强调代码只从db中删除所有节点。例如我创建了一个节点并使用neo4j控制台进行检查:match(n)返回n并返回节点但运行后代码没有返回,这很奇怪!!!!!!!!!!
答案 0 :(得分:1)
所有数据库交互都在单个事务中运行,这种事务永远不会成功(),因此当应用程序完成时它会回滚。
这是由您在创建数据库的行之后立即放置的附加db.beginTx()引起的,即此代码段中的第二行:
GraphDatabaseService db = new GraphDatabaseFactory().newEmbeddedDatabase( DB_PATH );
db.beginTx();
try ( Transaction tx = db.beginTx(); )
删除db.beginTx();
行,你会没事的。
答案 1 :(得分:0)
在您查看服务器时,您是否偶然没有关闭java中的图形数据库?
我在代码中没有看到任何db.shutdown()
。
一次只能有一个进程访问数据库目录。