Рассмотрим оператор SQL:
select * from table where status in <statuses>
Где статус - это перечисление:
CREATE TYPE statusType AS ENUM (
'enum1',
'enum2';
В Java у меня есть список перечислений в строковом представлении:
List<String> list = new ArrayList<>();
list.add("enum1");
list.add("enum2");
Затем я пытаюсь построить и выполнить запрос, используя SqlStatement:
handle.createQuery("select * from table where status in <statuses>")
.bindList("statuses", statuses)
.map(Mapper.instance)
.list());
Я получаю следующую ошибку:
org.jdbi.v3.core.statement.UnableToExecuteStatementException: org.postgresql.util.PSQLException: ERROR: operator does not exist: status = character varying
Hint: No operator matches the given name and argument types. You might need to add explicit type casts.
Я пытался обернуть каждый элемент списка с помощьюCAST (enum1 как statusType) или enum1 :: statusType, но не повезло.
Любая помощь приветствуется.