- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的项目中,我通过 GraphDatabaseService
使用 Neo4j 的 Core-API。在测试中,我们有一个 EmbeddedGraphDatabase
,其中一切都按预期工作。然后,我编写了一些测试来查看我的实现在 RestGraphDatabase 上的行为如何,只是为了发现其中大部分都失败了!(GraphDatabaseService是通过Rest-API的GraphDatabaseFactory获取的,所以如果没有instanceof
检查我不知道它是哪一个)一些例子:
如果我使用GlobalGraphOperations
,一切都会失败,因为RestGraphDatabase
不支持GlobalGraphOperations。 (奇怪的是,GlobalGraphOperations.at
不会抛出,而是抛出 GlobalGraphOperations 中的所有方法)。
然后我想“好吧,我会使用 Cypher 来获得相同的行为。”我尝试实现这样的方法:
public getNodesWithLabel(String label, GraphDatabaseService graphService){
try(Transaction tx graphService.beginTx()){
ExecutionEngine ee = new ExecutionEngine(graphService);
//throws NullPOinterExeption in execute method
ExecutionResult result = ee.execute("MATCH (n:" + label + ") RETURN n");
result.columnAs("n");
//... mapping of Nodes
}
}
通过 API 搜索,我看到有一个 RestCypherQueryEngine
,它是通过 RestAPIFascade
初始化的。这里的问题是,这些方法不可互换,不实现相同的接口(interface),并且返回类型完全不同(即 ExecutionResult
与 QueryResult
)
所以我的问题是:有没有一种方法可以从 Neo4j 获得相同的行为,而所使用的技术(Rest 与 Embedded)并不重要?某种独立于技术的包装器将满足我的需求。
顺便说一句,我在版本 2 中使用 Neo4j
最佳答案
只是不要这样做。它要做的(如果它有效的话)是通过线路执行对数据库的每次调用,对节点、关系和属性的读写。你不想那样做。
用这个代替。
queryEngine = new RestCypherQueryEngine(restGraphDb.getRestAPI());
queryEngine.query(query, params)
这会将查询发送到服务器并在那里运行它们。
关于java - Neo4j - 如何处理不兼容的 RestGraphDatabase 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22410660/
在我的项目中,我通过 GraphDatabaseService 使用 Neo4j 的 Core-API。在测试中,我们有一个 EmbeddedGraphDatabase,其中一切都按预期工作。然后,我
我在 SSL 后运行我的 NEO4j HA 集群。 我正在用 Java 编写一个客户端来管理一些数据。现在因为我只使用 SSL 来加密通信,所以我使用的是自签名证书。但是现在我面临着一个 uglyco
我是一名优秀的程序员,十分优秀!