Как переписать запрос postgresSql как запрос Spring-data jpa - PullRequest
0 голосов
/ 25 февраля 2020

Я застрял в данный момент, пытаясь записать следующий запрос в виде запроса JPA с пружинными данными:

with recursive s as (
select *
from t
where file_id = '12345'
union all
select dfs.*
from t dfs
join s on s.file_id = dfs.parent_folder_id
)
select * from s;

Я пробовал следующее:

@Query(value = "with recursive subfiles as (
select * from t where file_id=?1 
union all 
dfs.* from t dfs join subfiles s 
on s.file_id = dfs.parent_folder_id) 
select file_id from subfiles", nativeQuery = true)

Но я получить следующую ошибку:

Method threw 'org.springframework.dao.InvalidDataAccessResourceUsageException' exception.
could not extract ResultSet; SQL [n/a]
org.hibernate.exception.SQLGrammarException: could not extract ResultSet
org.postgresql.util.PSQLException: ERROR: syntax error at or near "dfs"

В запросе должны быть перечислены все прямые или косвенные зависимые дочерние элементы для указанного c идентификатора. (аналогичный пост здесь )

1 Ответ

0 голосов
/ 03 марта 2020

Мне удалось исправить это в следующем формате:

@Query(nativeQuery = true,
value = "with recursive subfiles as " +
  "(select * " +
  "from t " +
  "where file_id=?1 " +
  "union all " +
  "select dfs.* " +
  "from t dfs " +
  "join subfiles s " +
  "on s.file_id = dfs.parent_folder_id) " +
"select file_id from subfiles")
List<String> listAllByParentId(String folderId);
...