Рекурсивный запрос Hibernate
мой желаемый запрос-получить список объектов курса, которые принадлежат к категории. Мои цели таковы:--3-->
public class Course{
String name;
List<Category> categories;
}
public class Category{
String name;
Category parent;
}
С категориями ссылаются друг на друга, они могут иметь бесконечную глубину:
A
A.A
A.A.A
A.A.B
A.B
A.B.A
B
B.A
B.B
C
Как я могу запроса для курсов в номинации "А.", и вернуть все курсы, связанные с А. А., А. А. А. и А. А. Б?
2 ответов
потому что вы не знаете, насколько глубоко дерево, вы можете использовать какой-то шаблон следующим образом
select distinct
c
from
Course c
left join fetch
c.categories c
where
c.name like 'A.A%'
Если вы хотите использовать собственный SQL, и ваша база данных поддерживает рекурсивные общие табличные выражения (в основном все основные СУБД, кроме MySQL), это довольно просто:
WITH RECURSIVE course_tree (name) AS ( SELECT name FROM course WHERE name = 'A.A' UNION ALL SELECT name FROM course WHERE parent_id = course_tree.id ) SELECT * FROM course_tree