3

In an earlier version of spring data neo4j (3.3.1), I was able to query for paths in my database and return them as Iterable<EntityPath<S,E>> like this:

public interface ArgumentNodeRepository extends GraphRepository<ArgumentNode> {
    @Query("START t=node({0}), r=node({1}) MATCH p=t<-[:SUPPORTED_BY|INTERPRETS*0..]-r RETURN p")
    Iterable<EntityPath<ArgumentNode, ArgumentNode>> getPaths(long childId, long rootId);
}

I'm trying to migrate to 4.0.0 and the EntityPath class seems to have disappeared. I don't see any mention of EntityPath in the migration guide. What's my new return type?

Tyler
  • 373
  • 1
  • 14

2 Answers2

3

EntityPath isn't supported in SDN 4, but you can still query for paths. I have an example here which contains a Cypher query that returns a path- the return type is Iterable<Map<String, Object>>

This represents a collection of paths, each path containing a list of interleaved nodes and relationships in the path (nodes and relationships represented as a Map). An example of how I processed the path is https://github.com/luanne/flavorwocky/blob/sdn/src/main/java/com/flavorwocky/service/PairingServiceImpl.java#L57

Luanne
  • 19,145
  • 1
  • 39
  • 51
  • For a similar query, I used to return `List` but when I only changed the return type to `Iterable>` it returned much more information ! What other types can I return to have different details of results ? Would reference a document please ? – Muhammad Gelbana Dec 09 '16 at 12:35
  • this worked for me. @luanne going through your github project was very help to deal with paths in neo4j with java. thanks – joe Feb 08 '18 at 13:59
0

You could also Neo4jOperations for this. Just create a custom repository implementation (see http://docs.spring.io/spring-data/data-commons/docs/current/reference/html/#repositories.custom-implementations), and call the Neo4jOperations bean from there:

neo4jOperations.queryForObjects(ArgumentNode.class, "START t=node({0}), r=node({1}) MATCH p=t<-[:SUPPORTED_BY|INTERPRETS*0..]-r RETURN p")

This will return a list of ArgumentNodes