Я исследовал, как 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)
Подробнее здесь: https://stackoverflow.com/questions/788 ... es-queries
Мобильная версия