如何在spring数据neo4j 4中查询关系数据?

泰勒

我有一个密码查询,该查询应该返回节点和边,以便可以在Web应用程序中呈现图形的表示形式。我正在使用queryNeo4jOperations中方法运行它

start n=node({id}) match n-[support:SUPPORTED_BY|INTERPRETS*0..5]->(argument:ArgumentNode)
return argument, support

之前,我使用的是带有嵌入式数据库的spring数据neo4j 3.3.1,该查询在返回具有起始节点和结束节点的关系代理方面做得很好。我已经升级到spring数据neo4j 4.0.0,并切换到使用远程服务器,现在它返回的是悲惨的空LinkedHashMaps。

这是来自服务器的json响应:

{"commit":"http://localhost:7474/db/data/transaction/7/commit","results":[{"columns":["argument","support"],
    "data":[
        {"row":[{"buildVersion":-1},[]]},
        {"row":[{"buildVersion":-1},[{}]]}
    ]}],"transaction":{"expires":"Mon, 12 Oct 2015 06:49:12 +0000"},"errors":[]}

我通过在DefaultRequest.java中放置一个断点并执行EntityUtils.toString(response.getEntity())获得了这个json。该查询应返回通过type的边关联的两个节点INTERPRETS在响应中,您将看到[{}],这是有关边缘的数据应位于的位置。

如何获得所需数据的响应?

泰勒

免责声明:这不是一个明确的答案,这只是我到目前为止所完成的。

您可以在中使用queryForObjects方法Neo4jOperations,并确保查询返回路径。例子:

neo4jOperations.queryForObjects(ArgumentNode.class, "start n=node({id}) match path=n-[support:SUPPORTED_BY|INTERPRETS*0..5]->(argument:ArgumentNode) return path", params);

返回的POJO应该根据它们的关系注释正确地挂钩在一起。现在,您可以浏览它们并手动构建一组可以序列化的边缘。不理想,但可行。

建议您返回路径的文档:

http://docs.spring.io/spring-data/data-neo4j/docs/4.0.0.RELEASE/reference/html/#_cypher_queries

对于检索映射对象的查询方法,建议的查询格式是返回路径,该路径应确保正确映射已知类型并适当地将它们与关系连接在一起。

解释为什么queryForObjects有帮助:

在后台,不同类型的查询之间存在区别。它们具有GraphModelQueryRowModelQueryGraphRowModelQuery,每个都将不同的排列传递resultDataContents: ["row", "graph"]给服务器。如果您需要足够的数据来重建图形,则需要确保“图形”在列表中。

您可以在以下代码中找到此代码ExecuteQueriesDelegate

if (type != null && session.metaData().classInfo(type.getSimpleName()) != null) {
    Query qry = new GraphModelQuery(cypher, parameters);
    ...
} else {
    RowModelQuery qry = new RowModelQuery(cypher, parameters);
    ...
}

使用queryForObjects可以提供一种类型,并将其插入GraphModelQuery模式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Neoid为什么要依赖关系数据库?如何在RoR中使用neo4j?

来自分类Dev

如何在Neo4j中迁移/移动/复制/移动数据

来自分类Dev

如何计算Neo4j中的关系数

来自分类Dev

如何在Neo4j中汇总关系计数

来自分类Dev

如何在Spring数据neo4j中限制@Fetch注释的深度

来自分类Dev

Neo4j和Spring Data Neo4j 4.0.0:导入大型数据集

来自分类Dev

如何在解析JavaScript中查询关系数据

来自分类Dev

如何在neo4j中存储时间数据类型?

来自分类Dev

Spring Neo4j不保存数据

来自分类Dev

如何使用Neo4j Spring数据存储库返回节点和关系

来自分类Dev

Neo4j 3.0和Spring数据

来自分类Dev

Spring数据查询到neo4j查询

来自分类Dev

获取没有重复的Neo4j节点和关系数据

来自分类Dev

查询以获取Laravel中的关系数据

来自分类Dev

如何在单个neo4j查询中删除和添加关系?

来自分类Dev

Neo4j中双向关系的命名约定(使用Spring数据)

来自分类Dev

Spring数据Neo4j密码查询

来自分类Dev

获取交易Neo4j Spring数据

来自分类Dev

如何在Neo4j中汇总关系计数

来自分类Dev

如何在Neo4J中建立关系

来自分类Dev

如何过滤Neo4j中的数据?

来自分类Dev

Spring数据Neo4J标准查询

来自分类Dev

Neo4j 3.0和Spring数据

来自分类Dev

Neo4j spring data数据污染

来自分类Dev

弹簧数据neo4j @按关系类型查询

来自分类Dev

计算neo4j中的关系数

来自分类Dev

neo4j 中的数据建模

来自分类Dev

如何在neo4j中定义属性的数据类型

来自分类Dev

neo4j如何在限制后续节点之间的关系数量之间使用变量节点进行查询?