次のような問題が手元にあります。
ユーザーとグループの間には多対多の関係があります。バックエンドには、それぞれのエンティティ クラスのテーブルと、ユーザーとグループの関連付けに関する情報を格納する交差テーブル User_Groups があります。グループ テーブルには 2 つの列があります。グループテーブルの構造は次のとおりです。
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
できます。次に、グループを 2 つのリストにフィルター処理できます。1 つは親ノードを表し、もう 1 つはすべての子ノードを表します。これで、グループ間の階層がグループ テーブルに格納されます。Javaでそれを実装する方法を理解できません。私はすでにリストを持っていますが、そのリストでは、各グループがその上に親を持ち、その下に子供を持つことができます。上から下への階層を構築する方法を理解できません。私の唯一の目的は、親ノードを構成する XML を最後の子ノードまで構築し、それをフロントエンドに送信することです。
PS:私はかなりグーグルで検索しました。アイデアが不足しています:(。助けてください