问题标签 [spring-data-neo4j-4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1546 浏览

spring-data-neo4j - 如何使用 Neo4jTemplate 合并而不是创建

我目前正在迭代一个数组,其中每个索引包含两个节点和一个关系(Part_1 -> Part_2),并且我正在使用 Neo4jTemplate.save() 方法将其保存到数据库中。但是,某些索引具有重复的节点,这些节点将与其他节点有关系(Part_2 -> Part_3)。我的版本目前每次都会创建一个新节点和关系,而不是在节点已经存在时合并。

我读了这篇文章,但我不明白如何实现它,以便两个相同的节点具有相同的 ID。我当前的代码是这样工作的:

  1. 创建两个节点
  2. 建立他们的关系
  3. 向节点添加 relashionship
  4. 使用 Neo4jTemplate.save() 持久化它

我需要将什么更改为 MERGE 而不是 CREATE?我是否需要在坚持之前进行检查,或者是否有办法在坚持 SDN 4 时进行检查?

编辑:

我决定使用 Neo4jTemplate.query() 方法来编写 Cyper 查询,但是我不知道如何正确创建参数以合并多个节点。我可以像这样为一个节点正确创建一个 MERGE 语句:

Map<String, Object> 参数 = new HashMap<String, Object>();
Map<String, Object> 节点 = new HashMap<String, Object>();

node.put("name", "Part_1");
params.put("道具", node_1);
字符串查询 = "MERGE(n1:Part {name:{props}.name})";

模板.查询(查询,参数);

我的目标是在两个节点上调用合并,然后再次调用合并以在一个语句中创建关系。我的代码现在看起来像这样:

Map<String, Object> 参数 = new HashMap<String, Object>();
List<Map<String, Object>> 地图;
Map<String, Object> node1 = new HashMap<String, Object>();
Map<String, Object> node2 = new HashMap<String, Object>();

node1.put("name1", "Part_1");
node2.put("name2", "Part_2");
地图 = Arrays.asList(node_1, node_2)

params.put("道具", 地图);
字符串查询=“合并(n1:Part {name:{props}.name1})
MERGE(n2:Part {name:{props}.name2)
MERGE(n1)-[:CREATED]->(n2)”;

模板.查询(查询,参数);

到目前为止,我在参数中看到的所有示例都带有多个节点,只是在调用时迭代整个事物。我还没有找到任何具有参数的示例,您可以在其中指定您所指的某个节点。如何创建引用某个节点的参数?提前致谢!

0 投票
1 回答
279 浏览

java - 页面内容的 SDN4 自定义查询分页替代方案

目前 SDN4 不支持分页(参考:Spring Data Neo4j 4 中的分页和排序

可以自己指定 SKIP 和 LIMIT 子句来检索部分结果,但是对于我们的系统,我们还需要执行自定义分页查询时返回的 Page 的 getTotalPages()、isFirst() 和 isLast() 值。

我们是否有另一种方法可以使用 SDN4 / OGM 检索这些值?或者,是否有任何代码建议/参考可以供我们自己实现(可能在 Page 对象的构造中)?

谢谢!

0 投票
2 回答
11835 浏览

neo4j - Neo4j:属性数组上的 Cypher 查询

我有一个域类,它有一个名为“alias”的属性,它是一个字符串数组列表,如下所示:

别名包含以下值:{"John Doe","Alex Smith","Greg Walsh"}

我希望能够使用如下所示的存储库查询进行如下查询:“我今天看到了史密斯”并获取数组值输出“亚历克斯史密斯”:

我尝试了一堆不同的查询,如上图所示,但这只有在输入查询与数组值完全匹配时才会匹配。

我想做一个与数组值匹配的输入查询子字符串。

例如:输入查询:“I saw Smith today”输出:“Alex Smith”

0 投票
1 回答
205 浏览

neo4j - Neo4j : loadByProperty 正在加载不属于该节点的其他对象

我的结构如下:

一家公司 -> 拥有一组用户 -> 每个用户都有一组政策 -> 每个政策都适用于一家公司。

示例图结构:

公司 (c1) 有两个用户 (u1, u2) 并且策略 (p1) 属于公司 (c1)。“u1”已采取策略(p1)。“u2”没有策略。

当我尝试通过“loadByProperty”方法加载 u2 时,预期应该是 User2 对象和相应的 Company(c1)。

但是,策略(p1)也在加载并设置为“u2”对象。

班级结构;

检索用户的方法:

使用 SDN 4(里程碑版)。

有什么建议么?谢谢是提前。

0 投票
1 回答
443 浏览

neo4j - 使用 Spring Boot 应用程序在 neo4j.ogm 上手动查询问题

在此处输入图像描述在我的项目中,我使用 spring boot、neo4j 和 org.neo4j.ogm 库在 spring boot 上集成 neo4j。我可以实现 GraphRepository 的 findone、findall 和 save 方法。但是当使用我自己的查询插入一个值时,它显示了一个错误。我找不到问题的原因。我正在使用给定的查询 `@Query("CREATE (n:Person { name : 'Andres', title : 'Developer' })")

0 投票
1 回答
172 浏览

spring - 使用 Spring Boot 应用程序在 Neo4j.ogm 上的关系问题

在我的项目中,我将 org.neo4j.ogm 与 spring boot 一起使用。当我尝试使用 @RelationshipEntity 创建关系时,意味着它将成功创建。但它不支持多对一关系。

在这里,我在 RELATED_TO_ScTaxonomy 上的关系中创建 Blueprint 与 ScTaxonomy 的关系。我想为 catalogueBlueprint 类添加关系属性。

我的意思是 Blueprint-(RELATED_TO_ScTaxonomy)-ScTaxonomy 与 catalogueBlueprint 类值保存在 RELATED_TO_ScTaxonomy 上。

一旦我重新启动服务,我将创建一个新的连接,这意味着已经创建的关系将丢失,并且只保存新创建的关系。

我正在使用查询

0 投票
1 回答
94 浏览

spring - Spring Data Neo4j 中 byId 的派生查询不正确

我有两个实体:用户和连接,以及两个适当的存储库。两个实体都有@GraphId id字段。连接实体具有User user字段。

在 ConnectionRepository 接口中,我添加了以下方法:

但它不起作用。它会生成不正确的密码查询。我认为它不正确,因为它包含这样的子句:

这是行不通的,因为id不是财产。一定是:

这是一个错误吗?无论如何,我怎样才能让它工作?

0 投票
2 回答
2472 浏览

neo4j - 如何控制自定义 Spring Data Neo4j 存储库方法的深度?

例如,如果我想按名称获取用户列表:

那么如何将加载深度设置为2?

我试图在SDN 4.0.0.RC2 docs中找到答案,但它没有包含有关此问题的任何内容。

0 投票
0 回答
120 浏览

spring - 如果执行更新,Spring Data Neo4j Repository.save 将无法正常工作

我尝试通过存储库(SDN 4.0.0.RC2)执行以下操作:

  1. entity用一个null有价值的属性保存
  2. entity再次保存(即更新它),但现在属性有一个值

在这种情况下,不执行更新。值仍然为空。它是一个错误吗?

0 投票
2 回答
1316 浏览

neo4j - 如何使用带有 Spring boot GraphRepository 的 Neo4j 获取两个节点之间的关系?

我是 Neo4j 的初学者,我对 Neo4j 图模型有基本的了解。我想知道如何使用 java 和 cyper 查询来获取两个节点之间的关系。我有两个实体,例如关注用户和角色。我想检索用户的角色。我有运行良好的 cyper 查询。当我尝试通过 neo4j 实体类时,我遗漏了一些东西。请看下面的代码片段,

用户实体类:

角色实体类:

任何人都可以帮我了解获取针对用户的角色吗?

TIA..,