Skip to content

Instantly share code, notes, and snippets.

@dalexandrov
Created February 23, 2021 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dalexandrov/83f6ba6cdb58a8a16fea621b637a2b9d to your computer and use it in GitHub Desktop.
Save dalexandrov/83f6ba6cdb58a8a16fea621b637a2b9d to your computer and use it in GitHub Desktop.
public List<Movie> findAll(){
try (var session = driver.session()) {
var query = ""
+ "match (m:Movie) "
+ "match (m) <- [:DIRECTED] - (d:Person) "
+ "match (m) <- [r:ACTED_IN] - (a:Person) "
+ "return m, collect(d) as directors, collect({name:a.name, roles: r.roles}) as actors";
return session.readTransaction(tx -> tx.run(query).list(r -> {
var movieNode = r.get("m").asNode();
var directors = r.get("directors").asList(v -> {
var personNode = v.asNode();
return new Person(personNode.get("born").asInt(), personNode.get("name").asString());
});
var actors = r.get("actors").asList(v -> {
return new Actor(v.get("name").asString(), v.get("roles").asList(Value::asString));
});
var m = new Movie(movieNode.get("title").asString(), movieNode.get("tagline").asString());
m.setReleased(movieNode.get("released").asInt());
m.setDirectorss(directors);
m.setActors(actors);
return m;
}));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment