创建JPA兼容查询

时间:2019-02-05 10:42:50

标签: sql jpa mariadb jpa-2.0 jpa-2.1

我有这张表,我想存储一条记录链。

rb.setRequestData(json);
Request response = rb.sendRequest(json.toString(), new RequestCallback() {
    public void onError(Request request, Throwable exception) {}
    public void onResponseReceived(Request request, Response response) {
        Window.open(rb.getUrl(), postTarget, postWinFeatures);
    }
});

我想为MariDB实现SQL查询,该查询按id打印所有记录以及带有reference_id的所有记录。像这样:

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

当我选择记录66进行所有向上和向下交易时,我想要,因为彼此都使用指向它们的id。如何使用递归CTE来实现?有更好的方法吗?

具有唯一ID 66的记录的预期结果:

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

我尝试过,但是上面的行没有打印。

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

Demo on DB Fiddle

如果可能,我想将此查询编辑为JPA吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

在MariaDB手册中阅读有关递归查询的更多信息 https://mariadb.com/kb/en/library/recursive-common-table-expressions-overview/