Spring Hibernate Native Query

94
15 марта 2022, 03:50

Сформировал вот такой запрос:

 @Query(value = "WITH RECURSIVE r AS (\n" +
            "    WITH b AS (\n" +
            "        SELECT min(t.id) min,\n" +
            "               (\n" +
            "                   SELECT t.id\n" +
            "                   FROM initial_data AS t\n" +
            "                   WHERE vehicle_category_type = :categoryType\n" +
            "                   ORDER BY t.id DESC\n" +
            "                   LIMIT 1\n" +
            "                       OFFSET :col - 1\n" +
            "               )       max\n" +
            "        FROM initial_data AS t\n" +
            "        WHERE vehicle_category_type = :categoryType\n" +
            "    ) (\n" +
            "             SELECT id,\n" +
            "                    min,\n" +
            "                    max,\n" +
            "                    array []::bigint[] || id AS a,\n" +
            "                    0                        AS n\n" +
            "             FROM initial_data AS t,\n" +
            "                  b\n" +
            "             WHERE id >= min + ((max - min) * random())::int\n" +
            "               AND vehicle_category_type = :categoryType\n" +
            "             LIMIT 1\n" +
            "         )\n" +
            "    UNION ALL\n" +
            "    (\n" +
            "        SELECT t.id, min, max, a || t.id, r.n + 1 AS n\n" +
            "        FROM initial_data AS t,\n" +
            "             r\n" +
            "        WHERE t.id > min + ((max - min) * random())::int\n" +
            "          AND vehicle_category_type = :categoryType\n" +
            "          AND t.id <> all (a)\n" +
            "          AND r.n + 1 < :col\n" +
            "        LIMIT 1\n" +
            "    )\n" +
            ")\n" +
            "SELECT t.*\n" +
            "FROM initial_data AS t,\n" +
            "     r\n" +
            "WHERE r.id = t.id"
            , nativeQuery = true)
    List<InitialData> findRandomByVehicleCategoryType(String categoryType, int col);

Получаю ошибку:

JdbcSQLSyntaxErrorException: Синтаксическая ошибка в выражении SQL "..."; ожидалось "[, ::, AT, FORMAT, *, /, %, +, -, ||, ~, !~, NOT, LIKE, ILIKE, REGEXP, IS, IN, BETWEEN, AND, OR, AS, ,, FROM, WHERE, GROUP, HAVING, WINDOW, QUALIFY, UNION, EXCEPT, MINUS, INTERSECT, ORDER, OFFSET, FETCH, LIMIT, SAMPLE_SIZE, FOR, )" 

Хотя в консоли БД , запрос отрабатывает отлично.

READ ALSO
Не переустанавливается jdk

Не переустанавливается jdk

Я новичок в java, несколько дней назад хотел переустановить java на новую версию jdk 13 а у меня стоял 18_141, установил jdk 13 а путях все прописал, захожу...

157
Как работает многопоточность java [дубликат]

Как работает многопоточность java [дубликат]

Объясните пожалуйста буквально на пальцах, простыми словами, как работает многопоточность в javaЕсть вопросы на которые я не могу найти ТОЧНЫЙ...

116
Как преобразовать одномерный массив в дву-мерный

Как преобразовать одномерный массив в дву-мерный

Допустим у меня есть одномерный массив

94