org.postgresql.util.PSQLException: ОШИБКА: синтаксическая ошибка в или около ":" - PullRequest
0 голосов
/ 07 октября 2019

Я запускаю SQL-запрос из PgAdmin4, который успешно выполняется, но когда я беру тот же запрос для запуска его из приложения Spring Boot, у меня появляется ошибка "org.postgresql.util.PSQLException: ОШИБКА: синтаксическая ошибка в или около":" "

Вот как выглядит SQL-запрос:

SELECT
   student.surname, student.first_name, student.last_name,
   jsonb_pretty(elems)
FROM assessment, jsonb_array_elements(assessment.assessment) AS elems
JOIN student ON student.id = (elems->>'student_id')::uuid
WHERE subject_id = 2
AND academy_year_id =3
AND form_id = 2
AND term_id = 1
AND section_id = 4;

И этот запуск успешно выполняется из PgAdmin4.

Это моя реализация в моем репозитории

@Query(nativeQuery = true, value = "SELECT\n" +
        "       student.surname, student.first_name, student.last_name,\n" +
        "       jsonb_pretty(elems)\n" +
        "FROM assessment, jsonb_array_elements(assessment.assessment) AS elems\n" +
        "JOIN student ON student.id = (elems->>'student_id')::uuid\n" +
        "WHERE subject_id = 2\n" +
        "AND academy_year_id =3\n" +
        "AND form_id = 2\n" +
        "  AND term_id = 1\n" +
        "AND section_id = 4;")
Object[] getSubjectAssessments();

И когда мой API вызывает этот метод, я получаю это сообщение об ошибке

org.postgresql.util.PSQLException: ERROR: syntax error at or near ":" 

Я не знаю, что я делаю неправильно.

1 Ответ

2 голосов
/ 07 октября 2019

JPA не может обработать специальный оператор приведения Postgres ::.

Используйте cast() вместо:

JOIN student ON student.id = cast(elems->>'student_id' as uuid)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...