Задать вопрос
@artemfisher

Как иерархические данные из таблицы преобразовать в объекты Java?

Добрый день!

Есть класс:
public class Catalog {

private int id;
private String name;
private Catalog parent;

// ниже разные методы, но поля только эти
}

В базе на Postgresql есть таблица catalogs:
create table catalogs
(
id serial primary key,
name text,
parent int references catalogs
)

Вопрос: как извлечь из базы список каталогов и записать его в список каталогов на Java, при этом сохраняя иерархию (ссылку на родительский каталог)?
  • Вопрос задан
  • 103 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 3
@alexalexes
Составить SQL-запрос на основе синтаксиса WITH RECURSIVE, чтобы выборка происходила от корня к листьям.
Выполнить запрос и получившуюся выборку прогнать через рекурсивную функцию, которая построит дерево, на основе описанной структуры элемента дерева.
Ответ написан
Комментировать
Jacen11
@Jacen11
есть штука, называется orm. Обычно используют Hibernate. Еще есть JPQL и jOOQ, они работают по др принципу
Ответ написан
Комментировать
@Wan-Derer
Зобанели на Хабре, волки́ ;((
Наверно как-то так:
- делаем выборку всех ID в List;
- заводим пустой List;
- проходим по списку ID обязательно итератором;
- рекурсивно достаём элементы, начиная с текущего ID, условия окончания рекурсии - parentId == null . Те элементы, которые достали - удаляем из списка ID (поэтому нужен итератор, а не простой цикл).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы