我正在为一个项目使用 JDBI/Dropwizard,并希望运行一些简单的查询。我有一个这样的查询:private static final String GET_STUFF = "SELECT * FROM myTable WHERE state IN (:desiredState)"
我在我的方法中绑定(bind)变量,如下所示:
@Mapper(MyType.class)
@SqlQuery(GET_STUFF)
public MyType getStuff(@Bind(desiredState) List<String> states);
但是,运行时出现以下错误:
org.skife.jdbi.v2.exceptions.UnableToCreateStatementException:
Exception while binding 'desiredState'....
Caused by: org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of java.util.ArrayList. Use setObject() with an explicit Types value to specify the type to use.
我将
states
作为 String 类型的 ArrayList
传入,所以我有点困惑这里发生了什么。有谁知道用 JDBI 做 In
的正确方法吗? 最佳答案
使用注释 @BindIn
而不是 @Bind
。
另外,:desiredState
应该写成 <desiredState>
关于java - 在 JDBI 中使用 IN 子句中的字符串列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42707457/