2011-09-02 73 views
0

我想用JdbcTemplate使用嵌套查詢,但發現問題,在我看來,它不支持嵌套查詢..我是對嗎?或者我需要改變什麼?嵌套查詢JdbcTemplate問題

因此,我調用

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

這給在Oracle的結果,但與

org.springframework.jdbc.InvalidResultSetAccessException failes:PreparedStatementCallback;對於SQL無效的ResultSet訪問[選擇sq.name作爲名稱from(選擇t1.name作爲來自table1的名稱t1左外連接table2 t2在t2.id = t1.fk_id其中t1.name不爲null)sq where upper(name )like upper('?')];嵌套的異常是java.sql.SQLException中:無效的列索引

EDITED

請求是一個簡單的字符串對象,它實際上是您在異常消息看到一個SQL。該E打開對象有無論在這種情況下,我離開它空(用於測試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

好吧,我會嘗試,但更簡單的查詢可以正常工作'upper('?')' – ayscha

+0

好的,你完全正確!我沒有認識。 – ayscha