169 похожих чатов

Всем привет, подскажите, пожалуйста. У меня есть Query запрос, в

который передается UUID.
UUID может не передаваться и тогда он будет null. Из-за этого происходит ошибка:

ERROR: operator does not exist: uuid = bytea
No operator matches the given name and argument types. You might need to add explicit type casts.

Проверки вроде NOTNULL не помогают
CAST(:id as uuid) тоже не помог

@Query(value = """
\\ different logic
WHERE
(:filter = false OR sta.agg_id in (:id))
\\ different logic
)""",
nativeQuery = true)
List<Student> findAllBy(Boolean filter, UUID id, Integer percent);

Кто-нибудь сталкивался с такой проблемой?

10 ответов

45 просмотров

А в чем проблема? Не передавай туда null и всё. Возвращай пустой лист до вызова репозитория, даже базу напрягать не надо

Victoria- Автор вопроса
Дэни
А в чем проблема? Не передавай туда null и всё. Во...

проблема в том что это фильтр и если Id передается, то нужно вернуть определенные значения, а если Id не передается, то нужно вернуть все значения

:filter = false OR (:id) is null OR sta.agg_id in (:id) А так? Когда filter не false, id может быть null?

Victoria- Автор вопроса
Алексей
:filter = false OR (:id) is null OR sta.agg_id in ...

Не помогает. Там ошибка из-за сериализации. Ему не нравится, что id другого типа данных и из-за этого ошибка

Victoria
Не помогает. Там ошибка из-за сериализации. Ему не...

Кстати да, лучше Стрингой его туда передавать. Просто избавишь себя от лишних проблем

Victoria- Автор вопроса
Дэни
Кстати да, лучше Стрингой его туда передавать. Про...

Закостылить, чтобы если null передавать id вроде 00000000-0000-0000-0000-000000000000. И проверять, если 00000000-0000-0000-0000-000000000000, то ничего не делай? А будет ли это работать если мы проходим по столбцу с типом UUID и ищем этот Id с типом стринга?

Victoria
Закостылить, чтобы если null передавать id вроде 0...

1) у тебя в базе нет таких Id, а значит никаких значений не вернётся 2) стринге пофиг, что сравнивать, в базе твой uuid скорее всего тоже в виде текста просто лежит

Victoria
Закостылить, чтобы если null передавать id вроде 0...

Тебе надо наоборот сравнивать с существующим значением, чтобы этот нулл ни на что не влиял

Victoria
Закостылить, чтобы если null передавать id вроде 0...

Поэтому тебе надо будет вписать что-то вроде ... AND <поле ИД в базе> = CASE WHEN length(:Id) > 0 THEN :Id ELSE <поле ИД в базе> ... Я не смотрел в твой кусочек кода, я просто описываю концепцию

Victoria- Автор вопроса
Дэни
Поэтому тебе надо будет вписать что-то вроде ... A...

К сожалению не помогло. Там другие ошибки появились. В итоге выяснилось, что нужен лист ИДишников. Но я появилась другая проблема: Колонки id не найдено в этом ResultSet’’е. Хотя в базе данных запрос отрабатывает, кто-нибудь сталкивался?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта