Sql 创建JPA兼容的查询

Sql 创建JPA兼容的查询,sql,jpa,mariadb,jpa-2.0,jpa-2.1,Sql,Jpa,Mariadb,Jpa 2.0,Jpa 2.1,我有这个表,我想存储一个记录链 CREATE TABLE table_name ( id INT, unique_id varchar, reference_id varchar, ); 我想为MariDB实现SQL查询,它通过id打印所有记录,并使用引用id打印所有记录。类似如下: | id | unique_id | reference_id | | | |----|-----------|--------------|---|---| | 43 | 555

我有这个表,我想存储一个记录链

CREATE TABLE table_name (
    id INT,
    unique_id varchar,
    reference_id varchar,
);
我想为MariDB实现SQL查询,它通过id打印所有记录,并使用引用id打印所有记录。类似如下:

| id | unique_id | reference_id |   |   |
|----|-----------|--------------|---|---|
| 43 | 55544     |              |   |   |
| 45 | 45454     | 43           |   |   |
| 66 | 55655     | 45           |   |   |
| 78 | 88877     | 66           |   |   |
| 99 | 454       | 33           |   |   |
当我选择record 66时,我希望获得所有上下事务,因为彼此都使用指向它们的id。如何使用递归CTE实现这一点?有更好的办法吗

具有唯一\u 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


如果可能的话,我想把这个查询编辑成JPA

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

但您可以使用SQL并将其作为本机查询执行

entityManager.createNativeQuery("<your sql>");
entityManager.createNativeQuery(“”);
阅读MariaDB手册中有关递归查询的更多信息

谢谢。如何编辑SQL查询以获取所有上下行?