获取整个父级层次结构

时间:2019-10-23 16:00:26

标签: spring-boot jpa spring-data-jpa

如果我有这样的课程:

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

获取节点的所有父层次结构最简单/最优雅的方法是什么?

类似List<Node> getTheWholeParentHierarchy(Node node);

2 个答案:

答案 0 :(得分:1)

尝试这种方式

@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()时,您可以选择带有其父级以及其父级的节点...

答案 1 :(得分:0)

如果可能的话,我相信您应该以其他方式建模:

@Entity
public class Node {

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

通过这种方式,您无需进行其他预处理,就可以调用parent.getChildren()