0

私はScalaのSpring3.0のJdbcTemplateクラスでオーバーロードされたquery()メソッドの1つを呼び出そうとしています...

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インターフェイスを拡張します。)「alternatives」は、それぞれこれらのパラメーターを持つ3つのバージョンの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 List を期待しているようです。

于 2011-08-09T21:47:59.197 に答える