Neo4j 如何为 Cypher 查询设置 ogm return 结果集?
How Neo4j ogm return result set for a Cypher query?
我是 Neo4j OGM 的新手,所以我创建了一个简单的示例来了解 neo4j ogm 的工作原理。我使用电影图。
我的电影class:
@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());
}
在我看来,这个查询的结果集将是:"Keanu Reeves"
但是 Neo4j Ogm 给我 7 次 "Keanu Reeves" :
所以因为基努演了 7 部电影,然后 Neo4j ogm return 7 次 "Keanu Reeves"。我想知道我的观点是否正确?
我可以 return 使用 Cypher 的 Neo4j-ogm 子图吗?
例如:基努和他所有的电影,在 java : person.getMovies();
如果可能的话,我需要做什么?
提前谢谢你,抱歉我的英语不好。
请确保您使用的是最新版本的 OGM (1.1.4),并且您的图表仅包含一个代表基努里维斯的节点(即您没有多次加载电影数据库)
我是 Neo4j OGM 的新手,所以我创建了一个简单的示例来了解 neo4j ogm 的工作原理。我使用电影图。
我的电影class:
@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());
}
在我看来,这个查询的结果集将是:"Keanu Reeves" 但是 Neo4j Ogm 给我 7 次 "Keanu Reeves" :
所以因为基努演了 7 部电影,然后 Neo4j ogm return 7 次 "Keanu Reeves"。我想知道我的观点是否正确?
我可以 return 使用 Cypher 的 Neo4j-ogm 子图吗? 例如:基努和他所有的电影,在 java : person.getMovies(); 如果可能的话,我需要做什么?
提前谢谢你,抱歉我的英语不好。
请确保您使用的是最新版本的 OGM (1.1.4),并且您的图表仅包含一个代表基努里维斯的节点(即您没有多次加载电影数据库)