2017-10-03 15 views
0

私は2つのテーブルユニットとunit_hierを持っています。単位テーブルにはいくつかの静的データが含まれ、unit_hierテーブルには階層関係が含まれます。Javaで階層内のSQLテーブルデータを表示する方法

**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  

今私は、応答JSONをフレームに必要unit_hier表のとおり。以下は

は、予想される応答の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つしかないのですが、子が存在しない最後の要素まですべての子を取得する必要があります。

+0

分かっている限り、SQLは階層的なクエリをサポートしていないので、(標準的な)JPAもどちらもサポートしていません。データベースには、Oracleの「START WITH ... CONNECT BY」のような独自の拡張機能がありますが、ネイティブクエリとして実行して結果を処理する必要があります。代わりに、クエリは再帰的に実行されますが、これは遅いですが、データセットが十分に小さく、頻繁にクエリを実行していない場合は許容される可能性があります。 –

+0

あなたのクラスはどこですか?何を試しましたか? – DN1

答えて

0

JPAは通常 双方向@ ManyToOne/@ OneToMany あなたのテーブル構造を介して再帰的な親/子関係をサポートしていますが、しかし、それを使用する前に変更することが必要です。別の階層テーブルは必要ありません。メインテーブルにparentIdカラムを追加し、それを双方向にマップするだけです。

関連する問題