Kotlin 内联行映射器<;T>;调用JdbcTemplate.query(String!、RowMapper<;T!>!、vararg Any!)

Kotlin 内联行映射器<;T>;调用JdbcTemplate.query(String!、RowMapper<;T!>!、vararg Any!),kotlin,spring-jdbc,Kotlin,Spring Jdbc,我无法使vararg与JdbcTemplate.query(String!、RowMapper!、vararg Any!)一起使用。如果我不使用变量参数,它似乎会起作用。例如: 这项工作: fun translates(field: String) = template.query("SELECT key, value FROM table", { rs: ResultSet, _: Int -> Pair(rs.getString("key"), rs.getString("va

我无法使
vararg
JdbcTemplate.query(String!、RowMapper!、vararg Any!)
一起使用。如果我不使用变量参数,它似乎会起作用。例如:

这项工作:

fun translates(field: String) = template.query("SELECT key, value FROM table", {
    rs: ResultSet, _: Int -> Pair(rs.getString("key"), rs.getString("value"))
})
fun translates(field: String) = template.query("SELECT key, value FROM table") {
    rs: ResultSet, _: Int -> Pair(rs.getString("key"), rs.getString("value"))
}
或者这是有效的:

fun translates(field: String) = template.query("SELECT key, value FROM table", {
    rs: ResultSet, _: Int -> Pair(rs.getString("key"), rs.getString("value"))
})
fun translates(field: String) = template.query("SELECT key, value FROM table") {
    rs: ResultSet, _: Int -> Pair(rs.getString("key"), rs.getString("value"))
}
但是这个不起作用(我在函数调用的末尾添加了
,字段
,它应该与函数
查询(String!、RowMapper!、vararg Any!)相匹配。
):

这是错误消息的相关部分:

query(String!, RowMapper<T!>!, vararg Any!)
  where T cannot be inferred for
  fun <T : Any!> query(sql: String!, rowMapper: RowMapper<T!>!, vararg args: Any!): (Mutable)List<T!>!
query(String!,RowMapper!,vararg Any!)
式中,T不能推断为
有趣的查询(sql:String!、rowMapper:rowMapper!、vararg args:Any!):(可变)列表!

< /代码> 你可以帮助编译器推断中间lambda的类型,通过说<代码> RoMaMeP{}.} /代码>:

fun translates(field: String) = template.query("SELECT key, value FROM table", RowMapper { rs: ResultSet, _: Int ->
    Pair(rs.getString("key"), rs.getString("value"))
  }, field)
添加
行映射器
使Kotlin SAM工作正常

谢谢,我知道会是这样,但我找不到任何使用JdbcTemplate的人的例子(我也不知道如何搜索通用语法…)