Почему JOOQ не использует переменные EnumType для запросов Postgres?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему JOOQ не использует переменные EnumType для запросов Postgres?

Сообщение Anonymous »

Я столкнулся с редкой проблемой в своем сервисе: иногда JOOQ не приводит перечислимые переменные для запроса postgres, мой вопрос: в чем может быть причина?
Я исследовал, как JOOQ строит запросы и обнаружил, что всегда следует приводить переменные EnumType для базы данных postgres следующим образом (обратите внимание на статус поля):

Код: Выделить всё

select
"model"."some_object"."id",
"model"."some_object"."number",
"model"."some_object"."created_at",
"model"."some_object"."deactivated_at",
"model"."some_object"."status"
from "model"."some_object"
where (
"model"."some_object"."number" = ?
and "model"."some_object"."status" in (?::"model"."entity_status", ?::"model"."entity_status")
)
Но иногда после перезапуска моя служба начинает выдавать следующее исключение:

Код: Выделить всё

select
"model"."some_object"."id",
"model"."some_object"."number",
"model"."some_object"."created_at",
"model"."some_object"."deactivated_at",
"model"."some_object"."status"
from "model"."some_object"
where (
"model"."some_object"."number" = ?
and "model"."some_object"."status" in (?, ?)
)

ERROR: operator does not exist: status = character varying
Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Когда это происходит, обычно достаточно просто перезапустить службу, чтобы она работала нормально. (Думаю, в этом случае он создает правильно подготовленный оператор для запроса)
Функция репозитория выглядит так:

Код: Выделить всё

fun findByNumber(number: String, statuses: StatusSet): List =
dslContext.fetch(
table,
table.NUMBER.eq(number).and(table.STATUS.`in`(statuses.statusList))
).into(SomeObject::class.java)
Версия Jooq: 3.16.6


Подробнее здесь: https://stackoverflow.com/questions/788 ... es-queries
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»