2011-01-26 1 views
4

Я хочу моделировать иерархические данные в Hibernate (а также в GAE).Дерево (иерархическая) Структура в спящем режиме и GAE

Структура сущность аналогична, как показано ниже:

class Node<T> 
{ 
    Long id; 
    T nodeValue; 
    Node<T> parent; 
    List<Node<T>> children; 
} 

Я в порядке с использованием JPA аннотаций, если это необходимо (который я думаю, будет).

Следующие функции должны быть поддерживаемым:

  • Добавление нового корня (может быть несколько деревьев в базе данных - с parent = null) . Можете обойтись без этого, если это может привести к созданию не стартера (используя некоторый «невидимый корневой узел правого деда»)
  • Добавление нового узла в любой родительский
  • Удаление узла и его полного подкаталога, структура дерева
  • Обновление узла (скажем, изменение родительских/детей и т.д.)
  • Возможность путешествовать сверху вниз, а также снизу вверх внутри дерева
  • И самое главное ... Дано id, способность к забрать конкретный узел и затем перемещаться вверх (путь предка)/вниз (детский путь)

Дополнительная информация (обновления)

Вот что я логически хочу добиться:

  • Есть плоский список категорий в таблице. Эти категории не имеют отношения друг к другу
  • У вас есть таблица, которая создаст несколько «наборов иерархий» для этих категорий.

Зачем мне это нужно?

Я создаю приложение, в котором документы могут быть представлены этим категориям.

Однако каждый пользователь может иметь другую точку зрения на те же категории. Например, я могу создать hierachy Company -> Departments -> HR -> World -> Asia -> India, тогда как кто-то другой может захотеть увидеть Company -> World -> Asia -> India -> Departments -> HR.

Любая помощь в моделировании этой структуры будет отличной.

+0

И вопрос .. .? – Kel

+0

Пожалуйста, помогите мне смоделировать сущность (при необходимости добавьте несколько элементов) и создать соответствующую конфигурацию (аннотация, файл hbm.xml и т. Д., Что бы ни требовалось). :) –

ответ

-1

То, что вы хотите, вероятно, что-то вроде этого (из набора тестов в Hibernate):

https://github.com/hibernate/hibernate-orm/blob/master/hibernate-core/src/test/java/org/hibernate/test/annotations/manytoone/Node.java

Но без какого-либо конкретного вопроса, то трудно ответить ...

+0

Я задаю еще некоторые особенности в самом главном вопросе ... дайте мне знать, если эти идеи помогут вам помочь мне :) –

+1

@partenon: ссылка github нарушена. – zellus

+0

Хотя я согласен с тем, что разочарование встречается с неработающей ссылкой, это не должно быть так сложно найти в тестовом наборе Hibernate (я упомянул источник в самом ответе). Кроме того, это хорошая практика, чтобы посмотреть набор тестов, чтобы найти отличные примеры использования. В любом случае, я исправил ссылку. – jpkrohling

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