gpt4 book ai didi

spring - 在深度 > 0 的 FindBy Spring 数据 Neo4J 查询中指定方向

转载 作者:行者123 更新时间:2023-12-04 16:45:23 24 4
gpt4 key购买 nike

我使用 SDN 4.2.1 在 Neo4J 中保存和加载节点及其关系。

直到现在,我一直在使用深度参数等于 2 的 findByXXX 方法。现在我需要将深度增加到 3,但查询速度太慢了,我知道为什么:执行的查询没有考虑方向的关系。

这是从日志中执行的查询(耗时超过 20 秒):

o.n.o.drivers.bolt.request.BoltRequest   : Request: MATCH (n:`Property`) WHERE n.`id` = { `id_0` } WITH n MATCH p=(n)-[*0..3]-(m) RETURN p, ID(n) with params {id_0=P31}

当我用方向重写查询时,它变得非常快:

MATCH (n:`Property`) WHERE n.`id` = "P31" WITH n MATCH p=(n)-[*0..3]->(m) RETURN p, ID(n)

我找不到一种方法来指定,在我的例子中,我只想在我的 GraphRepository 接口(interface)的 findByXXX 函数声明中使用“传出”关系。是否有像“@Depth”注释这样的参数来指示方向?

最佳答案

目前没有办法通过注解来声明更细粒度的查询。实际上,在代码中有一些关于(不)遵循某些路径的提示可能对特定用例有好处,但对其他用例则无关紧要。

查看在 JPA 上所做的示例:您可以使用注释来预先加载依赖对象。但是一旦应用程序增长,您必须管理 FetchProfilesNamedEntityGraphs 以根据用例处理您获取的方式。

这就是为什么在 SDN 4.x 中,执行此操作的首选方法是使用自定义密码查询。它将确保您以高效的方式仅获取所需的数据。

跟踪此问题存在问题 here .请注意,这是为 OGM/SDN 的下一个主要版本计划的改进之一。如果您有特定用例需要解决或对此有想法,请随时在 slack channel 上展开讨论 neo4j-users .

关于spring - 在深度 > 0 的 FindBy Spring 数据 Neo4J 查询中指定方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43319492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com