0

私は自分が間違っていることを捕まえることができません。ハードコードされた値を使用して、neo4j コンソールでクエリを実行できます。

リポジトリ クラスで次のクエリを実行しようとしています。

@Query("START user=node({0}) \n" +
        "MATCH (anotherUser) \n" +
        "WHERE NOT (anotherUser<-[:MATCHES]-user) AND NOT user = anotherUser \n" +
        "RETURN anotherUser")
Iterable<User> findMatchesForUser(User user);

クエリの結果は、引数として渡したユーザー間に :MATCHES エッジがないすべてのユーザー ノードである必要があります。

次の例外が発生します。

SEVERE: Servlet.service() for servlet [mvc-dispatcher] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: Error executing statement START user=node({0}) 
MATCH (anotherUser) 
WHERE NOT (anotherUser<-[:MATCHES]-user) AND NOT user = anotherUser 
RETURN anotherUser; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: Error executing statement START user=node({0}) 
MATCH (anotherUser) 
WHERE NOT (anotherUser<-[:MATCHES]-user) AND NOT user = anotherUser 
RETURN anotherUser; nested exception is `,' expected but `W' found

また、ここの例と一致していると思います。どんなヒントでもいただければ幸いです。

4

1 に答える 1

0

次のクエリで同じ結果を得ることができました。

@Query("START n=node({0}), a=node(*) \n" +
        "MATCH (n)-[r?:MATCHES]->(a) \n" +
        "WHERE has(a.__type__) AND r IS NULL AND a <> n \n" +
        "RETURN a");
Iterable<User> findMatchesForUser(User user);

まだよく理解できない理由で、クエリを機能させるためにhas(a. type ) を追加する必要がありました。シリーズ化しようとしています。

于 2014-01-15T03:58:12.103 に答える