Kev*_*vMo 7 java recursion orm hibernate hql
我想要的查询是获取属于类别的Course对象列表.我的对象如下:
public class Course{
String name;
List<Category> categories;
}
public class Category{
String name;
Category parent;
}
Run Code Online (Sandbox Code Playgroud)
由于类别相互引用,因此它们可以具有无限深度:
A
A.A
A.A.A
A.A.B
A.B
A.B.A
B
B.A
B.B
C
Run Code Online (Sandbox Code Playgroud)
如何查询"AA"类别中的课程,并返回与AA,AAA和AAB相关的所有课程?
如果您愿意使用本机 SQL 并且您的数据库支持递归公用表表达式(基本上除 MySQL 之外的所有主要 DBMS),这很容易:
WITH RECURSIVE course_tree (name) AS ( 选择名称 从课程 WHERE 名称 = 'AA' 联合所有 选择名称 从课程 WHERE parent_id = course_tree.id ) 选择 * FROM course_tree
因为您不知道树有多深,所以可以使用某种模式,如下所示
select distinct
c
from
Course c
left join fetch
c.categories c
where
c.name like 'A.A%'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7996 次 |
| 最近记录: |