0

我正在尝试在 Scala 中调用 Spring 3.0 的 JdbcTemplate 类中的重载 query() 方法之一...

val args: Array[Object] = new Array[Object](1)
args(0) = id
val results: List[MyObj] = jdbcTemplate.query(SQL_STRING, args, new MyJdbcStore.MyObjRowMapper)

...我得到一个堆栈跟踪,上面写着“使用替代方法的重载方法值查询”。(上面代码片段中的 MyObjRowMapper 是一个类,在 MyJdbcStore 的伴生对象中定义,它扩展了 Spring 的 RowMapper 接口。)“替代品”是 query() 的三个版本,分别具有以下参数:

java.lang.String, Array[java.lang.Object], org.springframework.jdbc.core.ResultSetExtractor
java.lang.String, org.springframework.jdbc.core.PreparedStatementSetter, org.springframework.jdbc.core.ResultSet
org.springframework.jdbc.core.PreparedStatementCreator, org.springframework.jdbc.core.PreparedStatementSetter, org.springframework.jdbc.core.ResultSetExtractor

即使我已经明确定义了结果变量的返回类型,为什么编译器不能确定调用哪个查询方法?

4

1 回答 1

2

query您正在调用的方法返回一个类型为 的对象java.util.List[T]。显然你期待一个 Scala 列表。

于 2011-08-09T21:47:59.197 回答