Я работаю над приложением java, использующим Neo4j в качестве БД. Моя модель данных использует класс, связанный с тем же классом в типе дочерних и родительских отношений. У меня есть запрос, чтобы получить все дочерние элементы для определенного узла, однако, поскольку родительский и дочерний элементы относятся к одному классу, мой запрос возвращает все узлы, включая родительский узел. См. Код ниже:
@NodeEntity
class A {
@Id
private String id;
@Relationship(type = "PARENT")
private Parent parent;
// Constructor, getters, setters, etc.
}
@RelationshipEntity(type = "PARENT")
class Parent {
@Id
@GeneratedValue
private Long relationshipId;
@StartNode
private A child;
@EndNode
private A parent;
// Constructor, getters, setters, etc.
}
class Repository { // simplified repository class
@Query("MATCH(c:A)-[r:PARENT]->(p:A {id: $id}) return c,r,p")
List<A> getParents(@Param("id") String id);
}
Если я изменю запрос на:
class Repository { // simplified repository class
@Query("MATCH(c:A)-[r:PARENT]->(p:A {id: $id}) return c")
List<A> getParents(@Param("id") String id);
}
, он действительно возвращает только дочерние узлы, но я получаю значение NULL, если я сделаю что-то вроде a.getParent ().
Можно ли использовать запрос для получения всех детей с вложенным родителем?