在Neo4J数据库中,我有一个实体' Person'可以作为PARENT_OF或CHILD_OF关系与其他人相关
例如,密码查询
Match (p:Person) - [:PARENT_OF] -> (c:Person) where id(p) = {p_id} return p, c
将返回包含id p_id 的父记录p和一组子记录c
在Java中,我有一个基类Person
public class Person {
@GraphId private Long id;
@Property @NonNull private String profile;
@Relationship(type="RELATED_TO", direction="OUTGOING") Experience experience;
@Relationship(type="RELATED_TO", direction="OUTGOING") Activity activity;
}
和2个子课程
@NodeEntity (label="Person")
public class Parent extends Person {
@Relationship(type="PARENT_OF", direction="OUTGOING") private List<Child> child;
}
@NodeEntity (label="Person")
public class Parent extends Person {
@Relationship(type="PARENT_OF", direction="OUTGOING") private List<Child> children;
}
假设合适的getter和setter
我想在Java中使用Neo4J-OGM并获得一个父亲的id。这个父母应该有一个预装儿童的列表
这样的查询案例:
final Iterable<Parent> parents = session.query(Parent.class, "MATCH (parent:Person) - [:PARENT_OF] -> (child:Person) where id(parent) = {personId} return parent --> child", ImmutableMap.of("personId", 15L));
System.out.println (parent.get(0));
我希望父对象加载其所有子对象(应该填充List属性)。
我该怎么做呢?我需要使用Cypher。
答案 0 :(得分:2)
最简单的事情是
import {Component, ViewChild, ContentChild, Host, Inject, forwardRef} from 'angular2/angular2'
@Component({ selector: 'a-cmp' /* ... */ })
class A {
greet = 'Hello, I\'m A!!!'
}
@Component({ selector: 'b-cmp' /* ... */ })
class B {
greet = 'Hello, I\'m B!!!'
}
@Component({
selector: 'c-cmp',
directives: [A],
template: '<a-cmp></a-cmp><ng-content></ng-content><div>c-template</div>'
})
class C {
@ViewChild(A) a: A;
@ContentChild(B) b: B;
constructor(@Host() @Inject(forwardRef(() => App)) app: App) {
console.log(app.greet);
}
afterViewInit() {
console.log(this.a.greet);
}
afterContentInit() {
console.log(this.b.greet);
}
}
@Component({
selector: 'my-app',
directives: [B, C],
template: '<c-cmp><b-cmp></b-cmp></c-cmp>'
})
export class App {
greet = 'Hello, I\'m App!!!'
}
默认加载深度为1,因此它将加载子项。如果您愿意,可以自定义此深度。
不确定为什么需要使用Cypher但是如果您愿意,那么接受Person parent = session.load(Person.class, parentId);
的{{1}}上的loadAll
方法应该有效。
以下是https://github.com/neo4j/neo4j-ogm/blob/master/src/test/java/org/neo4j/ogm/domain/tree/Entity.java
的示例