Всегда загружать определенный дочерний объект в neo4j

class Node {
    Long id;
    String name;

    @Relationship(type="NodeToCategory")
    Address address;

    List<NodeB> nodeBList;



}

//node B CLass

class NodeB {
    Long id;
    String someOther;

    @Relationship(type="NodeToCategory")
    Address address;

    List<NodeC> nodeCList;



}

class Address {
    Long id;
    String name;
}

Когда я запускаю запрос с глубиной 2 на Node это возвращается nodeBList но он не возвращает адреса NodeB. Я хочу убедиться, что всякий раз, когда есть объект адреса, он всегда будет возвращать адрес независимо от глубины. Не должен возвращать адреса NodeB как Null,

Один из способов сделать это - загрузить все адреса до и затем попытаться загрузить Node, Я пытаюсь избежать этого. Есть ли способ сделать это с помощью каких-либо аннотаций или других функций, о которых я не знаю в neo4jOGM?

1 ответ

Вы можете добиться этого с помощью @Query а также pattern в вашем cypher, Это также вернет NodeB с address для тех с одним адресом и нулевым адресом для тех без address,

@Query("MATCH (na: Node) " +
  "WHERE na.name={0} " +
  "WITH na " +
  "MATCH p=(na)-[*0..2]->(n) " +
  "RETURN p")
public Node getNode(String name);
Другие вопросы по тегам