开始使用嵌入我的JAVA Web服务器的Neo4j。保存数据时,事务成功,但无法通过浏览器可视化数据。
从tutorial尝试了样本Hello世界。并安装了neo4j社区版,指向数据库并导航到http://localhost:7474/browser/后,我看不到任何数据。
此外,当我停止应用程序并通过Java运行Cypher查询时没有获取任何数据。
使用Maven依赖
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>2.3.1</version>
</dependency>
编写示例代码
try {
Transaction tx = graphDb.beginTx();
firstNode = graphDb.createNode();
firstNode.setProperty( "message", "Hello, " );
secondNode = graphDb.createNode();
secondNode.setProperty( "message", "World!" );
relationship = firstNode.createRelationshipTo( secondNode, RelTypes.KNOWS );
relationship.setProperty( "message", "brave Neo4j " );
tx.success();
}
嵌入式和服务器的DB路径相同。
答案 0 :(得分:2)
我不知道问题的确切根源。但我有清单,应该进行验证。
1)您的应用程序和Neo4j服务器应该使用相同的数据库。当您通过GraphDatabaseFactory
创建嵌入式数据库时,您正在指定数据库位置。应在conf/neo4j-server.properties
文件(org.neo4j.server.database.location
选项)中为Neo4j服务器指定相同的数据库位置。
2)您应该 NOT 在服务器和应用程序中同时使用数据库。数据库一次只能由一个Neo4j实例使用。
3)对事务使用try-with-resource
语法。它在Java7及更高版本中可用。例如:
try (Transaction tx = db.beginTx()) {
// do stuff
tx.success();
}
这样,事务总是会在任何情况下都被关闭(即使在执行期间发生异常,或者在beginTx()
中)。
4)确保以“干净的方式”关闭数据库。在应用程序中,可以通过db.shutdown()
方法完成。可以通过bin/neo4j stop
停止服务器。