Derby数据库 - 确定层次结构中的级别以转换数据库 - > DefaultMutableTreeNode Java对象

时间:2013-01-30 02:59:03

标签: java sql hierarchy derby jtree

我在德比有一张桌子:

                       CREATE TABLE IMPORT_RULES
                        (RULEID INTEGER NOT NULL,
                        PARENTID INTEGER,
                        NAME VARCHAR(25) NOT NULL,
                        PRIMARY KEY (RULEID))

PARENTID是父级的RULEID,但父/子关系是未知的深度。

我的目标是创建一个表示分层数据的DefaultMutableTreeNode。

我的想法是,最好的方法是让SQL查询返回数据库中每个项目的“级别”,然后从最低级别向后循环到最高级别。

我的问题是我似乎无法为Derby提出查询......

有关如何生成此查询或以其他方式实现目标的任何想法?

2 个答案:

答案 0 :(得分:1)

如果H2 Database是可接受的替代方案,则它支持Recursive Queries。有关自定义树模型,请参阅此answer

答案 1 :(得分:0)

我认为没有一个查询可以实现你的目标,如果有它必须在我的头顶。就性能而言,模式有效的方式将“深度”保存在单独的表中并不好。所以简单地说,将树节点数据保存在IMPORT_RULES表中,并将每个节点的深度保存在一个单独的表中,比如IMPORT_RULE_LEVEL,它将节点ID和相关深度保存到全局根节点。

但显然,如果在分支中间插入新节点,有时可能需要批量更新。如果你所有的逻辑需要做的只是附加子节点,那么一个单独的表将是一个不错的选择。