Как отразить модель вложенных наборов в JPA

Хорошо использовать вложенные наборы для иерархических данных. Но в этом дизайне вы всегда должны вычислять правый и левый узлы, если вы удаляете или вставляете какие-то данные. Кроме того, у вас нет внешних ключей.

Как я могу отразить эту модель с JPA?? Является ли это возможным?


person Kayser    schedule 17.08.2012    source источник


Ответы (1)


Я думаю, вам все равно нужен PARENT_ID даже с RIGHT и LEFT, иначе родительские/дочерние запросы были бы неэффективными, или я даже не уверен, что это возможно.

Значения RIGHT и LEFT вы можете обновить в своем приложении/модели или через события PrePersist/PreUpdate/PreRemove.

Другой вариант — использовать вместо этого разнесенную таблицу. Для этого вам просто нужно добавить отношение allChildren, которое использует таблицу соединения ManyToMany. Когда вы добавляете дочерний элемент к любому узлу, вам просто нужно добавить его ко всем его родителям.

Еще один вариант — просто использовать иерархический запрос в вашей базе данных, такой как предложение CONNECT BY в Oracle.

person James    schedule 29.08.2012