【发布时间】:2019-07-20 05:35:29
【问题描述】:
我们如何将下面的 CTE 查询(递归)更改为简单的子集 sql:
WITH links (parent, child) AS
( SELECT parent, child
FROM Heirarchy_Table
WHERE parent = '111111'
UNION ALL
SELECT ht.parent, ht.child
FROM Heirarchy_Table ht
INNER JOIN links ON links.child = ht.parent)
SELECT * FROM links fl;
我需要将此查询用于 JPA,因为 JPA 未处理“WITH”子句。 [注意:“链接”cte 是递归使用的]。 非常感谢!!
【问题讨论】:
-
谢谢肖恩,但我知道 JPA 没有处理“WITH”子句。此外,在上面的查询中,我们使用递归。所以,SELECT * from (SELECT * ...) 对我不起作用。
-
不做递归就不能做递归。因此,将其移至子查询或任何不起作用的东西。处理这个问题的最好方法是创建一个存储过程并从 JPA 中调用它。
-
是的,有道理。我试图避免存储过程。但是,这看起来是一个不错的解决方法。非常感谢!!
标签: sql sql-server spring-boot jpa spring-data-jpa