Как Neo4j ogm возвращает набор результатов для запроса Cypher?

Я новичок в Neo4j OGM, поэтому я создаю простой пример, чтобы понять, как работает neo4j ogm. Я использую График фильма.

Мой класс Кино:

@NodeEntity(label="Movie")
public class Movie extends Entity {

@Property(name = "title")
private String title;

@Property(name="released")
private int released;

@Property(name="tagline")
private String tagline;

public Movie(){

}

public Movie(String titre, int year, String tagline){
    this.title = titre;
    this.released = year;
    this.tagline = tagline;
}

@Relationship(type = "ACTED_IN", direction = Relationship.INCOMING)
private Set<Person> actors = new HashSet<Person>();

public String getTitle(){
    return title;
}

public int getReleased(){
    return released;
}

public void setTitle(String ptitle){
    this.title = ptitle;
}

public void setReleased(int pReleased){
    this.released = pReleased;
}

public String getTagline(){
    return this.tagline;
}

public void setTagline(String pTagline){
    this.tagline = pTagline;
}


public Set<Person> getActors(){
    return this.actors;
}


public void setActors(Set<Person> actors){
    this.actors = actors;
}

@Override
public String toString(){
    return "Movie {" + "id=" + getLId() +
                 ",title=" + title + ",released="+ released + ",tagline="+ tagline +"}";

}

И я пытаюсь получить данные из графика фильма с помощью простого запроса:

String query = "MATCH (p:Person {name:'Keanu Reeves'})-[r:ACTED_IN]->(m:Movie) RETURN p";

    Iterable<Person> lperson = session.query(Person.class, query, Collections.emptyMap());

    for (Person person : lperson) {
        System.out.println(person.getName());
    }

По моему мнению, результатом этого запроса будет: "Киану Ривз", но Neo4j Ogm даст мне 7 раз "Киану Ривз":

введите описание изображения здесь

Так потому, что Киану играет в 7 фильмах, а затем Neo4j огм вернет 7 раз "Киану Ривз". Я хочу знать, правильна ли моя точка зрения или нет?

Могу ли я вернуть подграф с Neo4j-ogm, используя Cypher? Например: Киану и все его фильмы, в java: person.getMovies(); Если это возможно, то что мне нужно делать?

Заранее спасибо и извините за мой плохой английский.

1 ответ

Решение

Убедитесь, что вы используете последнюю версию OGM (1.1.4), и что ваш график содержит только один узел, представляющий Киану Ривза (т.е. вы не загружали базу данных фильмов несколько раз)

Другие вопросы по тегам