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

//setters and getters... 
} 

SQL Query:Отображение результата иерархии подзапросов заводскую/CTE набор для Java Class

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<Object[]> к List<Category>? возможно, есть функция Hibernate для этого?

ответ

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; 

нет коллекция. У вас будут типы объектов, которые вы хотите.

Надеюсь, это поможет вам

Смежные вопросы