我手头有这个问题,如下:
用户与用户之间存在多对多关系。 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直到最后一个子节点并将其发送到前端。