2015-08-21 72 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環境路徑爲您的系統。