2015-08-21 52 views
0

这是我第一次尝试使用java的Neo4j。我用maven来解决所有的依赖关系。我的代码看起来像这样。使用Java配置Neo4j

package com.hp.neo4jdemo; 

import org.neo4j.graphdb.GraphDatabaseService; 
import org.neo4j.graphdb.Label; 
import org.neo4j.graphdb.Node; 
import org.neo4j.graphdb.Relationship; 
import org.neo4j.graphdb.RelationshipType; 
import org.neo4j.graphdb.Transaction; 
import org.neo4j.graphdb.factory.GraphDatabaseFactory; 

public class Main { 

    public enum NodeType implements Label { 
     Person, Course; 
    } 

    public enum RelationType implements RelationshipType { 
     Knows, BelongsTo 
    } 

    public static void main(String[] args) { 
     GraphDatabaseFactory graphDatabaseFactory = new GraphDatabaseFactory(); 
     GraphDatabaseService graphDb = graphDatabaseFactory.newEmbeddedDatabase("C:\\Program Files\\Neo4j Community"); 

     try(Transaction tx = graphDb.beginTx()) { 
      Node bobNode = graphDb.createNode(NodeType.Person); 
      bobNode.setProperty("PId", 5001); 
      bobNode.setProperty("Name", "Bob"); 
      bobNode.setProperty("Age", 23); 

      Node aliceNode = graphDb.createNode(NodeType.Person); 
      aliceNode.setProperty("PId", 5002); 
      aliceNode.setProperty("Name", "Alice"); 

      Node eveNode = graphDb.createNode(NodeType.Person); 
      eveNode.setProperty("Name", "Eve"); 

      Node itNode = graphDb.createNode(NodeType.Course); 
      itNode.setProperty("Id", 1); 
      itNode.setProperty("Name", "IT Beginners"); 
      itNode.setProperty("Location", "Room 153"); 

      Node electronicsNode = graphDb.createNode(NodeType.Course); 
      electronicsNode.setProperty("Name", "Electronics Advanced"); 

      bobNode.createRelationshipTo(aliceNode, RelationType.Knows); 

      Relationship bobRelIt = bobNode.createRelationshipTo(itNode, RelationType.BelongsTo); 
      bobRelIt.setProperty("Function", "Student"); 

      Relationship bobRelElectronics = bobNode.createRelationshipTo(electronicsNode, RelationType.BelongsTo); 
      bobRelElectronics.setProperty("Function", "Supply Teacher"); 

      Relationship aliceRelIt = aliceNode.createRelationshipTo(itNode, RelationType.BelongsTo); 
      aliceRelIt.setProperty("Function", "Teacher"); 

      tx.success(); 
     } 
     graphDb.shutdown(); 
    } 
} 

当我运行代码它成功执行,但是当我从后端交叉检查节点时,我没有看到任何。

我使用的是Windows 7 64位和Neo4j社区服务器。 Neo4j服务器安装了所有默认配置。

我执行下列步骤检查数据是否被添加到数据库:

  1. 执行上面的代码
  2. 启动社区服务器
  3. 查询的网址http://localhost:7474/browser/
  4. 执行查询'MATCH(n)RETURN n;'它不返回节点

任何人都可以让我知道我要去哪里出错或者可能是配置有问题。

+1

您应该检查在创建EmbeddedGraphDatabase路径时实际上是否指向数据库。通常数据库存储在'$ HEO_HOME/data/graph.db'文件夹中。另外 - 考虑使用工具连接到Neo4j服务器,而不是使用嵌入式数据库。 – FylmTM

+0

@FylmTM - 这是neo4j的第一次尝试。我真的不知道$ NEO_HOME的价值是什么(我会检查它)。如果我无法找到价值,请告诉我它是什么。我在Windows 7中安装了neo4j所有默认配置。 – Rammohan

+0

您在创建嵌入式数据库的位置是一个奇怪的位置。几乎可以肯定,当你启动服务器时,它并不指向那个位置。首先三重检查。 – FrobberOfBits

回答

0

替换代码 GraphDatabaseService graphDb = graphDatabaseFactory.newEmbeddedDatabase(“C:\ Program Files \ Neo4j Community”); 为

GraphDatabaseService graphDb = graphDatabaseFactory.newEmbeddedDatabase("C:/Program Files/Neo4j Community");

,也可能我知道如何设置你的noe4j环境路径为您的系统。