如何在JAVA中显示层次结构中的sql表数据

时间:2017-10-03 21:11:38

标签: java jpa spring-boot

我有2个表单位和unit_hier。 unit表包含一些静态数据,unit_hier表包含层次关系。

**UNIT TABLE**
UNIT_ID     UNIT_NAME       DESC                                                  
1           Test1           Test 1                 
2           Test2           Test 2  
3           Test3           Test 3  
4           Test4           Test 4  
5           Test5           Test 5  
6           Test6           Test 6  
7           Test7           Test 7   
8           Test8           Test 8  
9           Test9           Test 9  
10          Test10          Test 10  
11          Test11          Test 11  
12          Test12          Test 12  
13          Test13          Test 13  
14          Test14          Test 14  
**UNIT_Hier Table**
PARENT_UNIT_ID  CHILD_UNIT_ID  
1               2     
1               3    
1               4    
2               5    
2               6    
5               7      
5               8    
3               9     
7               10     
3               11     
3               12     
4               13     
5               14     

现在按照unit_hier表我需要构建一个响应json。

以下是预期的回应json:

{
        "UNIT_ID": 1,
        "UNIT_NAME": "Test1",
        "DESC": "Test 1",
        "childUnit":[
            {"UNIT_ID": 2,
            "UNIT_NAME": "Test2",
            "DESC": "Test 2",
            "childUnit":[ 
                {"UNIT_ID": 5,
                "UNIT_NAME": "Test5",
                "DESC": "Test 5",
                "childUnit":[ 
                    {"UNIT_ID": 7,
                    "UNIT_NAME": "Test7",
                    "DESC": "Test 7",
                    "childUnit":[ 
                        {"UNIT_ID": 10,
                        "UNIT_NAME": "Test10",
                        "DESC": "Test 10",
                        "childUnit":[]
                        }
                        ]},

                    {
                    "UNIT_ID": 8,
                    "UNIT_NAME": "Test8",
                    "DESC": "Test 8",
                    "childUnit":[]
                    },
                    {
                    "UNIT_ID": 14,
                    "UNIT_NAME": "Test14",
                    "DESC": "Test 14",
                    "childUnit":[]
                    }


                {
                "UNIT_ID": 6,
                "UNIT_NAME": "Test6",
                "DESC": "Test 6",
                "childUnit":[]
                }
                ],

        {
            "UNIT_ID": 3,
            "UNIT_NAME": "Test3",
            "DESC": "Test 3",
            "childUnit":[
                {"UNIT_ID": 9,
                "UNIT_NAME": "Test9",
                "DESC": "Test 9",
                "childUnit":[]
                },
                {
                "UNIT_ID": 11,
                "UNIT_NAME": "Test11",
                "DESC": "Test 11"
                "childUnit":[]
                },
                {
                "UNIT_ID": 12,
                "UNIT_NAME": "Test12",
                "DESC": "Test 12",
                "childUnit":[]
                }
        ],
        {
        "UNIT_ID": 4,
        "UNIT_NAME": "Test4",
        "DESC": "Test 4",
        "childUnit":[
        {"UNIT_ID": 13,
        "UNIT_NAME": "Test13",
        "DESC": "Test 13",
        "childUnit":[]
        }
        ]
        }
        }
    }

问题是我尝试简单地解析数据。我只获得1级解析但我需要让所有孩子直到最后一个没有孩子的元素。

1 个答案:

答案 0 :(得分:0)

JPA通过普通支持递归父/子关系 双向@ ManyToOne / @ OneToMany 您的表结构需要更改才能使用它。您不需要单独的层次结构表。只需将parentId列添加到主表中,然后通过双向映射。