创建JPA兼容查询

问题描述 投票:0回答:1

我有这个表,我想用来存储记录的链条。

CREATE TABLE table_name (
    id INT,
    unique_id varchar,
    reference_id varchar,
);

我想实施MariaDB的SQL查询它通过ID打印所有记录与参考ID的所有记录。事情是这样的:

| id | unique_id | reference_id |   |   |
|----|-----------|--------------|---|---|
| 43 | 55544     |              |   |   |
| 45 | 45454     | 43           |   |   |
| 66 | 55655     | 45           |   |   |
| 78 | 88877     | 66           |   |   |
| 99 | 454       | 33           |   |   |

当我选择记录66获得所有上下交易,因为对方正在使用的ID,它指向他们,我想。我怎样才能实现这个使用递归CTE?有没有更好的办法?

对于UNIQUE_ID 66记录预期的结果:

| id | unique_id | reference_id |   |   |
|----|-----------|--------------|---|---|
| 43 | 55544     |              |   |   |
| 45 | 45454     | 43           |   |   |
| 66 | 55655     | 45           |   |   |
| 78 | 88877     | 66           |   |   |

我试过,但不打印上面的行。

select @ref:=id as id, unique_id, reference_id
from mytable
join (select @ref:=id from mytable WHERE id = 66)tmp
where reference_id=@ref

Demo on DB Fiddle

如果有可能,我想编辑此查询到JPA?

sql jpa mariadb jpa-2.0 jpa-2.1
1个回答
0
投票

这是不可能的,因为JPQL这将是一个递归查询。

但是你可以使用SQL和执行该本机查询。

entityManager.createNativeQuery("<your sql>");

了解更多有关递归查询的MariaDB的手动https://mariadb.com/kb/en/library/recursive-common-table-expressions-overview/

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.