Java Hibernate递归查询
我想要的查询是获取属于某个类别的课程对象列表。我的目标如下:Java Hibernate递归查询,java,hibernate,orm,recursion,hql,Java,Hibernate,Orm,Recursion,Hql,我想要的查询是获取属于某个类别的课程对象列表。我的目标如下: public class Course{ String name; List<Category> categories; } public class Category{ String name; Category parent; } 如何查询A类课程,并返回所有与A.A、A.A.A和A.A.B相关的课程 因为您不知道树有多深,所以可以使用以下某种模式 select distin
public class Course{
String name;
List<Category> categories;
}
public class Category{
String name;
Category parent;
}
如何查询A类课程,并返回所有与A.A、A.A.A和A.A.B相关的课程 因为您不知道树有多深,所以可以使用以下某种模式
select distinct
c
from
Course c
left join fetch
c.categories c
where
c.name like 'A.A%'
如果您愿意使用本机SQL,并且您的数据库支持递归公共表表达式(基本上是除MySQL之外的所有主要DBMS),那么这非常简单: 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
你好我正在构建一个POC作为面试测试,我正在尝试使用递归查询,就像这个例子一样。该数据库是一个H2数据库,因为它只是一个POC。H2确实支持递归查询,我使用H2控制台对其进行了测试。但在创建本机查询时,它不会返回任何记录。项目是Spring引导+Spring数据,测试H2实例在内存中。非常感谢您的任何意见。谢谢 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