2

对分层数据使用嵌套集很好。但是在这个设计中,如果你删除或插入一些数据,你应该总是计算右节点和左节点。此外,您没有任何外键。

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

4

1 回答 1

1

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

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

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

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

于 2012-08-29T12:53:36.197 回答