【问题标题】:Spring data neo4j SDN 6春天数据neo4j SDN 6
【发布时间】:2021-01-28 16:46:51
【问题描述】:

在 SDN 6 中,@Deapth 注解被移除,并且在最新的 6.0.3 中,增加了对双向关系的支持。早些时候,它在保持相同节点实体之间的双向关系的同时提供 StackOverflow。例如,A-follows->B 和 B-follows->A。 现在,这种类型的关系是可能的,但是当您使用 find* 方法加载 Node 时,由于嵌套关系,它变得过于缓慢,并且 Depth 也被删除,因此它加载了整个关系。 我们有什么解决方法吗?

【问题讨论】:

  • 显然我不能添加 cmets 所以在这里写。我决定暂时降级到 5.3.6,这正在解决我的目的。但绝对期待 SDN 6 中的解决方案。我观察到 SDN 6 更适合使用。我很高兴 SDN 团队正在研究它。

标签: spring neo4j spring-data-neo4j


【解决方案1】:

我面临着完全相同的问题。显然,到目前为止我还没有找到解决方法。查询继续运行并最终因内存不足错误而失败。

问题是由于自引用而发生的。这似乎是一个缺陷,因为自引用节点似乎是图的理想用例,而它们在尝试查找节点时会中断。这是我由 SDN 生成的查询:

MATCH (n:Part) WHERE n.sku = "SKU000009"  WITH n, id(n) AS __internalNeo4jId__ RETURN n{.allowCustomerReviews, __nodeLabels__: labels(n), __internalNeo4jId__: id(n), __paths__: [p = (n)-[:SOLD_BY|GROUPED_WITH|PART_OF|FITS_INTO]->()-[:SOLD_BY|GROUPED_WITH|PART_OF|FITS_INTO|MANUFACTURED_BY*0..]-()-[:MANUFACTURED_BY*0..1]->()-[*0..]-() | p]}

【讨论】:

  • 您是否打算离开 SDN 并使用像 Neo4jTemplate 这样的低抽象选项?我几乎被困住了。
  • 我们目前正在研究(而且看起来很有希望)在自我引用/循环方面基于路径的方法的替代方案,因为“我们听到你的声音”但需要时间来评估选项并给出适当的回答。
  • 感谢@meistermeier 的更新,因为我需要在下个月生产应用程序,我想这不会在一个月内改变,所以我的一个问题是如果我不使用 self-在我的图形模型中引用/循环并使用最新的 6.0.3 SDN,我能保证优化查找查询吗?像早期的 SDN 一样
  • 如果您的 Java 模型没有导致那些可以打开对整个图的访问的循环,是的。我假设 2 月中旬会有服务发布,但我们依赖 Spring Data 团队来发布这个。需要明确一点:即使进行了更新,SDN 仍然会获取整个图,因为如果这将被映射,这就是您的 Java 模型中定义的内容。但它不应该让数据库崩溃,从而导致应用程序崩溃。
  • 所以我用图形进行了测试,没有创建循环,但我的 java 模型具有自引用的关系,我所做的唯一区别是没有创建 2 向关系并且仍然只有单向关系, SDN 产生的查询导致数据库崩溃。
猜你喜欢
  • 2015-10-22
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-14
  • 2017-05-24
相关资源
最近更新 更多