【问题标题】:EQUIVALENT OF @FETCH IN CYPHERCYPHER 中的 @FETCH 等价物
【发布时间】:2015-01-23 20:47:12
【问题描述】:

任何人都可以帮助在单个密码查询中填充连接的节点。我使用 Neo4j 服务器,似乎批处理命令是要走的路。整天工作想弄清楚。

   START n=node:ErrandLocation('withinDistance:[-2.80, 56.34, 100.00]') WITH n MATCH person-[r:POSTED]->n WITH n, person SET n.owner = person RETURN n ORDER BY n.added DESC SKIP 0 LIMIT 10

   Exception is "[Node[184]:org.neo4j.kernel.impl.core.NodeProxy] is not a supported property value"

【问题讨论】:

    标签: neo4j cypher spring-data spring-data-neo4j


    【解决方案1】:

    您正在为节点设置属性?

    您可能想建立关系?但是你已经有了:POSTED 一个?

    或者你想设置n.owner = person.name

    【讨论】:

    • 感谢您的回复,我想知道如何在密码中做类似于 SDN @Fetch 的事情。 SET 可能不是我需要的,但我希望我的结果包含 person 对象
    • 我不知道你为什么要设置它与@Fetch 无关,获取只是声明密码应该匹配并返回的路径。
    • 我刚开始学习 cypher 和 SDN。我希望 SDN 能神奇地让我得到 person 对象。
    • 虽然我认为在 SDN REST @Fetch 实际上意味着针对数据库的新 Cypher 查询,因此我的回答如下。
    【解决方案2】:

    当您编写自己的密码查询时,使用 @QueryResult 检索连接的节点。不要在 SDN Rest 中使用 @Fetch 注释,因为路径匹配将连续发生而不是批量发生。当可以在单个查询中完成时,SDN 将进行额外的 REST 调用以尝试序列化整个对象图。 例如,

            public class Person {
    
                @RelatedTo (type = "MARRIED", direction = BOTH)
                private Person partner;
    
            }
    
            @QueryResult
            public class PersonResult {
    
                 @ResultColumn("person")
                 private Person person;
    
                 @ResultColumn("partner")
                 private Person partner;
    
            }
    

    然后在您的存储库中获取您的结果

            public interface PersonRepository extends GraphRepository <Person> {
                   @Query ("MATCH person-[m:MARRIED]-partner RETURN person, partner)
                   List<PersonResult> findAllMarried ();
            }
    

    在有问题的情况下,只需返回人员以批量获取您的密码查询的对象并使用@ResultColumn 字段或接口方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 2019-11-03
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多