Древовидные структуры и Java Persistence 2.0 - PullRequest
0 голосов
/ 19 марта 2012

У меня есть несколько категорий.Каждая категория может хранить подкатегории.Например:

1) Музыкальные инструменты

a) Гитары

  • Электрогитары

  • Акустическая гитара

б) Пианино

2) Канцелярские товары

  • Линейки

  • Карандаши

Я хотел бы просмотреть вышеуказанные данные в виде дерева, и я хочу контролировать позиции элементов.Я использую JPA 2.0, и я не знаю, как лучше сохранить данные.Я могу решить проблему по-своему, но я не хочу изобретать велосипед.Итак, я ищу лучшее решение - библиотеку и т. Д. Что мне использовать?

1 Ответ

3 голосов
/ 19 марта 2012

Это классическая проблема.

Решение во многом зависит от того, что вы хотите сделать со своим деревом.

Нормальным решением является непосредственное представление отношений родитель-потомок.Ваш класс выглядит примерно так:

@Entity
public class Category {
    @ManyToOne
    private Category parent;

    @OneToMany(mappedBy="parent")
    private Set<Category> children;
}

И у вас есть один столбец в таблице, который содержит значение parent.

Этот подход прост для понимания и реализации, и делаетНавигация по дереву очень проста.Тем не менее, довольно дорого ответить на такие вопросы, как «что все категории где-то под« домашней обстановкой »?»или «Является ли« lilos »подкатегорией, на любой глубине,« садовых принадлежностей »?».

Если вы не возражаете против использования некоторого собственного SQL, и ваша база данных поддерживает рекурсивные общие табличные выражения, тогда вывыполнять такие запросы довольно легко.

Если нет, найдите вложенных множеств .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...