2016-04-14 5 views
0
public class Category { 
     private String id; 
     private String name; 
     private Category parent; 
     private Collection<Category> children; 

//setters and getters... 
} 

SQLクエリに設定サブクエリの工場/ CTE階層結果をマッピング:Javaクラス

WITH CATEGORY_LINK(id,name,parent_id) AS (
    SELECT id, name, parent_id from CATEGORY 
    WHERE parent_id IS NULL 
UNION ALL 
    SELECT id, name, parent_id FROM CATEGORY_LINK INNER JOIN CATEGORY ON (CATEGORY_LINK.id = CATEGORY.parent_id) 
) 
SELECT * FROM CATEGORY_LINK 
JAVA: 

    { 
    ... 
    List<Object[]> categoryRawData = sqlQuery.list(); 
    for(Object[] tuple : categoryRawData){ 
     String id = tuple[0]; 
     ... 
    } 
} 

適切List<Category>からList<Object[]>として設定指定された結果をマッピングする方法任意のアイデアは?おそらくこれを行うための休止状態の機能がありますか?

答えて

0

さて、あなたは親レコードと、多くの子供の記録を持っているとき、あなたはこのようなものにすることができます:

from Category cat 
left join fetch cat.parent p 

をし、関係を設定

<many-to-one name="parent" class="package.Category" column="CAT_ID" fetch="select" /> 

としてあなたのクラスで自分の属性を設定します。 a

List<Category> children; 

ではありません。あなたはあなたが望むオブジェクトタイプを持つつもりです。

ご希望の方