我正在尝试在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接口。)“alternative”是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
即使我已经明确定义了结果变量的返回类型,为什么编译器无法确定要调用哪个查询方法?
答案 0 :(得分:2)
您正在调用的query
方法返回类型为java.util.List[T]
的对象。显然你期待Scala列表。