Получить всю родительскую иерархию - PullRequest
0 голосов
/ 23 октября 2019

Если у меня есть такой класс:

@Entity
public class Node {
    @OneToOne
    @JoinColumn(name = "PARENT_NODE_ID")
    private Node parent;
}

Какой самый простой / самый элегантный способ получить всю родительскую иерархию узла?

что-то вроде: List<Node> getTheWholeParentHierarchy(Node node);

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Попробуйте следующим образом

@Entity
public class Node {
   @Id
   @Column(name = "node_id")
   private long nodeId;

   @ManyToOne(cascade = { CascadeType.ALL })
   @JoinColumn(name = "parent_id")
   @JsonIgnore
   private Node parent;

   @OneToMany(mappedBy = "parent")
   @JsonIgnore
   private Set<Node> subordinates = new HashSet<>();
}

когда вы nodeRepository.findById() можете выбрать узел с их родителем, а с их родителем ...

0 голосов
/ 23 октября 2019

Если это возможно, я считаю, что вы должны смоделировать наоборот:

@Entity
public class Node {

   @OneToMany
   private List<Node> children = new ArrayList();
}

Таким образом, вам не потребуется дополнительная предварительная обработка, и вы сможете вызывать parent.getChildren ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...