Рекурсивный запрос 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
