gpt4 book ai didi

java - 如何在 hibernate 中渲染具有多个表的树结构?

转载 作者:行者123 更新时间:2023-12-01 10:26:30 24 4
gpt4 key购买 nike

我需要从数据库中检索一棵树,其中定义了两个表:

  • node这里我定义了一个节点元素

  • 关系这里我通过使用ID指定父级和子级来定义树结构

在互联网上查找,我只找到具有单个表(节点表)的示例,其中定义了节点和关系:

@Entity 
@Table(name = "tree")
public class Node {

@Id
@GeneratedValue
private Integer id;

@NotNull
private String name;

@OneToMany
@JoinColumn(name = "parent_id")
@OrderColumn
private List<Node> children = new LinkedList<Node>();

}

尽管它更简单,但我不太喜欢它,因为基础表没有标准化。

任何人都可以为我提供一个使用两个表的简单示例吗?

最佳答案

您可能希望在关系表中有两列,

|id | parent_id|

Parent Node entry will update the parent_id against the id of the node

    @ManyToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@JoinTable(name="Relationship", joinColumns = @JoinTable(name = "Relationship", joinColumns = @JoinColumn(name = "parent_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "id", referencedColumnName = "id"))@Fetch(FetchMode.SELECT)
private Node parentNode;

Similarly child node will update the id against the parent_id of the node

@OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
@JoinTable(name = "Relationship", joinColumns = @JoinColumn(name = "id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "parent_id", referencedColumnName = "id"))
@Fetch(FetchMode.SELECT)
private Set<Node> childNodes;

关于java - 如何在 hibernate 中渲染具有多个表的树结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35333705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com