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

时间:2012-08-17 13:51:10

标签: java database java-ee jpa nested-sets

最好使用Nested sets作为分层数据。但在此设计中,如果删除或插入一些数据,则应始终计算右侧和左侧节点。此外,您没有任何外国钥匙。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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