簡體   English   中英

創建關系時的Neo4j異常

[英]Neo4j exception when creating relationships

我正在創建所有節點,然后添加所有關系。 所有節點都存儲在HashMap中,該字符串包含String名稱作為鍵,而node作為值,因此我可以輕松地訪問節點以創建關系。

    for(Map.Entry<String[], Integer> entry: company_counts_backward.entrySet()){
        String[] node_names  = entry.getKey();
        String company_from = node_names[0];
        String company_to = node_names[1];

        int count = entry.getValue();

        Node companyFromNode = nodes_created.get(company_from);
        Node companyToNode = nodes_created.get(company_to);
        Relationship relationship = companyFromNode.createRelationshipTo(companyToNode, Relations.WORKED_AT);
        relationship.setProperty("relationship-type", "knows");
        relationship.setProperty("length", count);
    }

請注意,此for循環由Transaction tx = graphDB.beginTx();包圍Transaction tx = graphDB.beginTx(); tx.finish();

問題是創建關系時,我似乎Exception in thread "main" org.neo4j.graphdb.NotInTransactionException拋出Exception in thread "main" org.neo4j.graphdb.NotInTransactionException異常。

完整的錯誤跟蹤如下:

at org.neo4j.kernel.impl.persistence.PersistenceManager.getCurrentTransaction(PersistenceManager.java:284)
at org.neo4j.kernel.impl.persistence.PersistenceManager.getResource(PersistenceManager.java:249)
at org.neo4j.kernel.impl.persistence.PersistenceManager.currentKernelTransactionForReading(PersistenceManager.java:230)
at org.neo4j.kernel.impl.core.ThreadToStatementContextBridge.transaction(ThreadToStatementContextBridge.java:53)
at org.neo4j.kernel.impl.core.ThreadToStatementContextBridge.instance(ThreadToStatementContextBridge.java:47)
at org.neo4j.kernel.impl.core.NodeProxy.createRelationshipTo(NodeProxy.java:406)

任何人都可以識別我的方向並指出正確的方向嗎?

將處理數據庫的所有代碼放在try-with-resources塊中:

try (Transaction tx = db.beginTx()) {
  Node n1 = db.createNode();
  Node n2 = db.createNode();
  n1.createRelationshipTo(n2, REL_TYPE);
  tx.success(); // This is important!
}

請注意,有時(例如,在執行只讀操作時)您不必調用tx.success() ,因為沒有要提交的內容。

有關交易管理的更多信息,請參閱文檔

PS我確實知道您指出您了解事務管理的必要性,所以我不只是重復您的話,我強調a) Transaction#finish()已棄用,不應使用,因此建議使用b)在完成交易之前,應始終提交更改(如果已進行)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM