使用数据库中的分层数据在java中创建树结构

时间:2012-10-29 16:34:56

标签: java mysql dom hierarchy

我手头有这个问题,如下:

用户与用户之间存在多对多关系。 Group.后端具有相应实体类的表以及交叉表User_Groups,其存储有关用户与组的关联的信息.Groups表有两列与手头的问题相关。组表如下:


Table name - GROUP

CREATE  TABLE IF NOT EXISTS
GROUP
(
  GROUP_ID INT NOT NULL AUTO_INCREMENT ,
  NAME VARCHAR(50) NULL ,
  DESCRIPTION VARCHAR(50) NULL ,
  CREATED_DATE DATE NULL ,
  CREATED_BY VARCHAR(50) NULL ,
  MODIFIED_DATE DATE NULL ,
  MODIFIED_BY VARCHAR(50) NULL ,
  GROUP_TYPE_ID INT NULL ,
  PARENT_GROUP_ID INT NULL ,
  PRIMARY KEY (GROUP_ID) ,
  INDEX fk_groupTypeId_idx (GROUP_TYPE_ID ASC) ,
  CONSTRAINT fk_groupTypeId  FOREIGN KEY (GROUP_TYPE_ID )  
  REFERENCES efc_group_type (GROUP_TYPE_ID )
 ON DELETE NO ACTION
 ON UPDATE NO ACTION);
------------------------------------------------------------------------------------------
Table name - USER_GROUPS

CREATE TABLE IF NOT EXISTS
EFC_USER_GROUPS 
(
  USER_ID int(11) NOT NULL,
  GROUP_ID int(11) NOT NULL,
  CREATED_DATE date DEFAULT NULL,
  PRIMARY KEY (USER_ID,GROUP_ID),
  KEY FK_USERID_idx (USER_ID),
  KEY FK_GROUPID_idx (GROUP_ID),
  CONSTRAINT FK_GROUPID_USERGROUPS FOREIGN KEY (GROUP_ID) 
  REFERENCES efc_group (GROUP_ID),
  CONSTRAINT FK_USERID_USERGROUPS FOREIGN KEY (USER_ID) 
  REFERENCES efc_user (USER_ID));

parent_group_id基本上充当group_id的外国列。一个组可以有子组,因此需要存储parent_group_Id。对于添加的每个子组,我们存储该组的parent_group_id,其中添加了子组。既然您对数据模型有了一些了解,我将说明我的问题是什么:

我正在尝试为组之间的父子关系构建树状结构。某个用户的子组。因此,对应于某个user Id,我能够从user_groups表中获取他所属的组。然后我能够将组过滤成两个列表,一个表示父节点和另一个拥有所有子节点。现在,组之间的层次结构存储在组表中。我无法弄清楚如何在java中实现它。我已经有了这份清单,但在该清单中,每个小组都可以有父母,也可以有低于此的孩子。我无法理解如何构建从上到下的层次结构。我唯一的目的是构建构成父节点的XML直到最后一个子节点并将其发送到前端。

P.S:我用Google搜索了一下。我的想法很缺点:(。请帮帮我

0 个答案:

没有答案