1

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

用户和组之间存在多对多关系。后端有各个实体类的表以及一个交集表 User_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 构建到最后一个子节点并将其发送到前端。

PS:我已经用谷歌搜索了很多。我没有想法:(。请帮助我

4

0 回答 0