1

Cypher を使用すると、コンマで区切ってリストすることで複数のノードが選択されます。

START n=node(1, 2, 3) RETURN n

http://docs.neo4j.org/chunked/milestone/query-start.html#start-multiple-nodes-by-id

これを Spring Data @Query で使用したいのですが、うまくいきません:

@Query("start person=node({0}) match (person)-[:has_friends]->(friend) return friend")
private Iterable<Person> friends(Iterable<Person> persons);

編集: スタックトレースは次のとおりです。

java.lang.ClassCastException: Person cannot be cast to org.neo4j.graphdb.Node
  at org.neo4j.kernel.impl.traversal.AsOneStartBranch.toBranches(AsOneStartBranch.java:65)
  at org.neo4j.kernel.impl.traversal.AsOneStartBranch.<init>(AsOneStartBranch.java:59)
  at org.neo4j.kernel.impl.traversal.BidirectionalTraverserIterator.<init>(BidirectionalTraverserIterator.java:81)
  at org.neo4j.kernel.impl.traversal.BidirectionalTraverserImpl.instantiateIterator(BidirectionalTraverserImpl.java:44)
  at org.neo4j.kernel.impl.traversal.AbstractTraverser.iterator(AbstractTraverser.java:83)
  at org.neo4j.cypher.internal.pipes.matching.BidirectionalTraversalMatcher.findMatchingPaths(BidirectionalTraversalMatcher.scala:73)
  at org.neo4j.cypher.internal.pipes.TraversalMatchPipe$$anonfun$createResults$1.apply(TraversalMatchPipe.scala:32)
  at org.neo4j.cypher.internal.pipes.TraversalMatchPipe$$anonfun$createResults$1.apply(TraversalMatchPipe.scala:29)
  at scala.collection.Iterator$$anon$21.hasNext(Iterator.scala:371)
  at scala.collection.Iterator$$anon$21.hasNext(Iterator.scala:371)
  at scala.collection.Iterator$$anon$19.hasNext(Iterator.scala:334)
  at scala.collection.Iterator$$anon$19.hasNext(Iterator.scala:334)
  at org.neo4j.cypher.PipeExecutionResult.hasNext(PipeExecutionResult.scala:138)
  at scala.collection.Iterator$$anon$19.hasNext(Iterator.scala:334)
  at scala.collection.JavaConversions$IteratorWrapper.hasNext(JavaConversions.scala:562)
  at org.neo4j.helpers.collection.IteratorWrapper.hasNext(IteratorWrapper.java:42)

何か案が?

4

3 に答える 3

0

SDN の現在のバージョンでは、次のクエリが機能するはずです。

@Query("(person)-[:has_friends]->(friend) where id(person) IN {0} return friend")
private Iterable<Person> friends(Iterable<Person> persons);
于 2014-12-02T11:19:55.557 に答える
0

node(*)の代わりにから開始する必要がありnode(0)ます。

于 2013-09-09T07:36:31.223 に答える
0

Personと注釈が付けられていると思い@NodeEntitiyます。スタックトレースが示すように、Node(s) ( NodeId(s) ( Long), work as well) が期待されます{0}start person=node({0}) ...

于 2013-09-10T10:07:39.847 に答える