【发布时间】:2020-03-13 15:54:44
【问题描述】:
我有代表树节点种类的表。下面的映射说明了节点的多对多映射。
@Entity
public class Node {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToMany
@JoinTable(name = "node_dependency",
joinColumns = {@JoinColumn(name = "parent_id")},
inverseJoinColumns = {@JoinColumn(name = "child_id")})
private List<Node> childNodes = new ArrayList<>();
}
它可以工作,但我希望有单独的表映射以简化删除查询。
@Entity
public class NodeRelation {
@ManyToOne
private Node parent;
@ManyToOne
private Node child;
}
如果我有 NodeRelation,我可以轻松找到在树的不同层上重复使用并且无法安全删除的节点,这比(节点上的一对多 + 多对一更难做到)在 NodeRelation 中的 FK 上)仅多对多映射。
我尝试了使用 NodeRelation 表示的复合键的不同映射组合,但没有运气(根据 db 架构的验证未通过)。请告诉我在这个用例中哪个映射更好。
【问题讨论】:
标签: java hibernate jpa hibernate-mapping