2011-08-09 5 views
0

를 호출하는 방법을 오버로드하는 스칼라 봄 3.0의 JdbcTemplate을 클래스의 메소드를 판별 할 수 없습니다 컴파일러 ...스칼라) 내가 오버로드 된 쿼리 중 하나를 (전화를 시도하고

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

... 그리고 "대안으로 메서드 값 값 오버로드"라는 스택 추적을 얻습니다. (위의 코드에 MyObjRowMapper는 봄의 RowMapper의 인터페이스를 확장 MyJdbcStore의 동반자 객체에 정의 된 클래스,입니다.) "대안"각각이 매개 변수가 쿼리()의 세 가지 버전은 다음과 같습니다

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

MyJdbcStore.MyObjRowMapper가 ResultSetExtract 유형의 인스턴스입니까? – paradigmatic

+0

아니요, 게시물에서 언급했듯이 MyObjRowMapper는 RowMapper입니다. String, Object 배열 및 RowMapper를 취하는 query() 버전을 호출하려고 시도하고 목록을 반환합니다. – chunjef

+2

오버로드 된 메서드는 결과 유형에 의해 선택되지 않습니다. –

답변

2

호출하는 query 메서드는 java.util.List[T] 유형의 개체를 반환합니다. 분명히 스칼라 목록을 기대하고 있습니다.

관련 문제