2011-09-02 5 views
0

중첩 쿼리를 JdbcTemplate과 함께 사용하려고하지만이 문제가 발견되어 중첩 쿼리를 지원하지 않는 것 같습니다. 맞습니까? 아니면 내가 바꿀 필요가 있니?중첩 쿼리의 JdbcTemplate 문제

그래서,

org.springframework.jdbc.InvalidResultSetAccessException 오라클 결과를 제공하지만,도 실패한

getJdbcTemplate().query(request, new Object[]{name}...) 
// request is query which you can see in error message 

는 호출 : PreparedStatementCallback 단계; SQL에 대한 무효 ResultSet 액세스 [이름으로 sq.name을 선택하십시오 (테이블 1에서 이름으로 t1.name을 선택하십시오. t1 왼쪽 외부 조인 table2에서 t2.id = t1.fk_id에 t2, 여기서 t1.name은 null이 아닙니다.) sq where upper (name) like upper ('?')]; 상자의 예외는 java.sql.SQLException이 있습니다 :

EDITED

요청이 실제로 예외 메시지에서 볼 수는 SQL입니다 간단한 String 객체입니다 잘못된 열 인덱스입니다. eturn 객체 내가

(테스트 ourpose에 대한) 빈을 왼쪽하지만 당신은 여기에서 확인하기 위해 단지를 위해 그대로이 상황에 상관없이이 있습니다

List<MyObject> list = getJdbcTemplate().query(request, new Object[]{"Somename"}, new RowMapper() { 
      public Object mapRow(ResultSet rs, int rowNum) throws SQLException { 
       return new MyObject(); 
      } 
     }); 
+1

'요청'이란 무엇입니까? 어떤 유형의 객체입니까? – skaffman

답변

2

upper('?')upper(?)에 변경하십시오. ?을 따옴표로 묶음으로써 데이터베이스는 사용자가 매개 변수를 처리하고 있음을 인식하지 못합니다.

+0

ok, 시도 하겠지만 간단한 쿼리는'upper ('?') ' – ayscha

+0

으로 잘 작동합니다. 좋습니다. 나는 친절하지 않았다. – ayscha