【发布时间】:2019-06-20 23:25:19
【问题描述】:
我有这张表,我想存储一个记录链。
CREATE TABLE table_name (
id INT,
unique_id varchar,
reference_id varchar,
);
我想为 MariDB 实现 SQL 查询,该查询通过 unique_id 和所有记录 reference_id 打印所有记录。像这样的:
| id | unique_id | reference_id | | |
|----|-----------|--------------|---|---|
| 43 | 55544 | | | |
| 45 | 45454 | 43 | | |
| 66 | 55655 | 45 | | |
| 78 | 88877 | 66 | | |
| 99 | 454 | 33 | | |
我希望当我选择记录 55544 来获取所有交易时,因为彼此都使用指向它们的 id。我如何使用递归 CTE 来实现这一点?有没有更好的办法?
unique_id 55544 记录的预期结果:
| id | unique_id | reference_id | | |
|----|-----------|--------------|---|---|
| 43 | 55544 | | | |
| 45 | 45454 | 43 | | |
| 66 | 55655 | 45 | | |
| 78 | 88877 | 66 | | |
如何在 HQL 中也实现此查询?我想在 JPA 中使用它?
【问题讨论】:
-
我想完整的答案是不可能的,因为:
How this query can be implemented also in HQL?。如果我错了,请纠正我,但 HQL 不支持所有类型的 CTE,并且无法实现递归查询。 NamedQuery/NamedNativeQuery - IDK 可能有一些“聪明”的技巧。 -
这个查询可以用 JPA 重写吗? stackoverflow.com/a/54394019/1103606
-
您可以通过 JPA 运行本机 SQL。关于 JPQL - 我想不是。
-
reference_id和id的数据类型应该相同,而不是类型不匹配(INT 与 VARCHAR)
标签: sql jpa mariadb jpa-2.0 recursive-query