CYPHER 中的@FETCH 等价物

EQUIVALENT OF @FETCH IN CYPHER

任何人都可以帮助在单个密码查询中填充连接的节点。我使用 Neo4j Server,似乎批处理命令是可行的方法。一整天都在努力弄清楚。

   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"

您正在为节点设置 属性?

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

或者您要设置 n.owner = person.name ?

当您编写自己的密码查询时,使用@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 ();
        }

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