Spring boot 获取整个父层次结构

Spring boot 获取整个父层次结构,spring-boot,jpa,spring-data-jpa,Spring Boot,Jpa,Spring Data Jpa,如果我有这样一门课: @Entity public class Node { @OneToOne @JoinColumn(name = "PARENT_NODE_ID") private Node parent; } 获取节点的所有父层次结构的最简单/最优雅的方法是什么 类似于:List getTheWholeParentHierarchy(节点)如果可能的话,我认为您应该以另一种方式建模: @Entity public class Node { @OneToM

如果我有这样一门课:

@Entity
public class Node {
    @OneToOne
    @JoinColumn(name = "PARENT_NODE_ID")
    private Node parent;
}
获取节点的所有父层次结构的最简单/最优雅的方法是什么


类似于:
List getTheWholeParentHierarchy(节点)

如果可能的话,我认为您应该以另一种方式建模:

@Entity
public class Node {

   @OneToMany
   private List<Node> children = new ArrayList();
}
@实体
公共类节点{
@独身癖
private List children=new ArrayList();
}
这样,您就不需要额外的预处理,并且可以调用parent.getChildren()

试试这种方法

@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<>();
}
@实体
公共类节点{
@身份证
@列(name=“node\u id”)
私有长节点;
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name=“parent\u id”)
@杰索尼奥雷
私有节点父节点;
@OneToMany(mappedBy=“家长”)
@杰索尼奥雷
私有集从属项=新HashSet();
}

当您
nodeRepository.findById()
时,您可以选择带有其父节点的节点,而它们的父节点…

不是我要找的。我希望父级的层次结构简洁有效……在Java中,使用递归方法遍历树。请参见此处的示例:。一些数据库可能支持分层查询,例如,谢谢,Alan,我只是想知道是否可以用优雅的lambda方式进行查询。还为孩子们找到了一些例子,但这些例子并不能很好地传达给家长:)