如果我有这样的课程:
@Entity
public class Node {
@OneToOne
@JoinColumn(name = "PARENT_NODE_ID")
private Node parent;
}
获取节点的所有父层次结构最简单/最优雅的方法是什么?
类似List<Node> getTheWholeParentHierarchy(Node node);
答案 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()