当前位置: 首页 > 知识库问答 >
问题:

获取整个父层次结构

卓雅达
2023-03-14

如果我有这样一门课:

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

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

类似于:List


共有2个答案

纪晨
2023-03-14

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

@Entity
public class Node {

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

这样,您将不需要额外的预处理,您将能够调用parent.get孩子()

贺经纶
2023-03-14

这样试试

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

 类似资料:
  • 问题内容: 我有一个带有分层数据的表,其结构如下所示: 如果我传递节点ID,则希望通过在SQL中遍历其所有父节点来获得最高的节点ID /细节。 我尝试过CTE,但我无法以某种方式获得正确的组合。但是,我将此功能用作函数,但是它太慢了,以至于我不得不发布这个问题。 在上面的示例中,如果我通过6,则我想拥有最高的即1。通过遍历6 => 5 => 3 => 2 => [1](结果) 在此先感谢您的帮助。

  • 我有一个绑定到MVVM可观察集合的TreeView。我的项目模板由图像和文本块组成,如以下代码所示: 当然,发生这种情况是因为堆栈面板现在位于选择区域上方。 有什么解决办法吗?

  • 问题内容: 我有课: 然后创建对象: 尝试获取所有字段后,我打电话 但是我只有一个数组 如何从所有类的所有字段包括扩展? 问题答案: 请尝试以下操作:

  • 问题内容: 我正在尝试查找指定目录下的所有文件和文件夹 例如我有/ home / user / stuff 我想回来 希望这是有道理的! 问题答案:

  • 问题内容: 我想知道如何检索实例的父结构。 我不知道如何实现这一目标。 例如: 干杯 问题答案: 您应该保留一个指向引擎盖的指针。 当你增加房子 那么您可以轻松更改,尽管此时可能不需要吸气剂。

  • 问题内容: 假设您有下表: …这是一个自引用表-指。 您将使用什么SQL查询来选择表中的所有项目以及它们的深度,其中项目的深度是该项目的所有父项和祖父母的总和。 该表的内容是否如下: …查询应检索以下对象集: {“ item_id”:1,“ depth”:0} {“ item_id”:2,“ depth”:0} {“ item_id”:3,“ depth”:1} {“ item_id”:4,“ d