如何在JPA中反映“嵌套集”模型

最好将嵌套集用于分层数据。 但在此设计中,如果删除或插入一些数据,则应始终计算右侧和左侧节点。 此外,您没有任何外键。

我如何用JPA反映这个模型? 可能吗?

我认为即使使用RIGHT和LEFT,你仍然需要PARENT_ID,否则父/子查询会效率低下,或者我甚至不确定是否可能。

您可以在应用程序/模型中或通过PrePersist / PreUpdate / PreRemove事件更新RIGHT和LEFT值。

另一种选择是使用爆炸表。 为此,您只需添加一个使用ManyToMany连接表的allChildren关系。 将子项添加到任何节点时,只需将子项添加到其所有父项。

另一种选择是在数据库中使用分层查询,例如Oracle中的CONNECT BY子句。