考虑一个 SQL 语句:
select * from table where status in <statuses>
其中 status 是枚举:
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 as statusType) 或 enum1::statusType 包装每个列表项,但没有成功。
任何帮助表示赞赏。
拉莫斯之舞
相关分类