2016-11-15 16 views
0

現在、OracleのDBに対してjdbctemplateを使用して実行することは非常に単純なクエリを取得しようと、次のエラーに実行している:Oracleの無効な列

PreparedStatementCallback; uncategorized SQLException for SQL; Invalid column type; nested exception is java.sql.SQLException: Invalid column type

SYSTEM_UNIQUE_ID VARCHAR2(50 CHAR) 
SYSTEM_TYPE_ID  NUMBER(4,0) 

コール

public int getSystemUniqueIDCount(final String systemUniqueID, final String systemTypeID) throws SQLException { 

    String checkCountQuery = "select count(*) as count from master_account where system_unique_id = ? and system_type_id = ?"; 

    Map<String, Object> row = getTemplate().queryForMap(checkCountQuery , new PreparedStatementSetter() { 

     @Override 
     public void setValues(PreparedStatement pstmt) throws SQLException { 
      pstmt.setString(1, systemUniqueID.toUpperCase()); 
      pstmt.setInt(2, Integer.parseInt(systemTypeID)); 
     } 

    }); 

    return (int) row.getOrDefault("count", 0); 
} 

どんな助けでも大いに訴えられます。

+0

[PrepardStatementSetter]を[引数として]使用しようとしていませんか?(http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/ JdbcTemplate.html#queryForMap-java.lang.String-java.lang.Object ...-)? (私が使用したものではありませんが、あなたがドキュメントと何をしているのかは一致しません - 私は明らかに何かを見逃しているかもしれません!) –

+0

私はアレックスに同意して、あなたの現在のスニペットがどのようにコンパイルされ、あなたが共有したものでランタイム 'SQLException'をどのように見ることができましたか? 'queryForMap()'または単に '' query() ''(http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core)を使用しますか? /JdbcTemplate.html#query-java.lang.String-java.lang.Object:A-org.springframework.jdbc.core.ResultSetExtractor-)? –

+0

@AlexPooleドキュメントを読み直した後、PreparedStatementSetterをquery()の引数として使用できますが、これは広範囲に使用されていますが、問題のある場所にあるqueryformap()では使用されません。それがなぜコンパイルされるのか?明らかにPreparedStatementSetterは、実際に値を提供しないものの、有効なオブジェクト配列として数えます。私はquery()に切り替えましたが、今は何も意図どおりに動作しています。あなたとミックのおかげです。 – iamthereplicant

答えて

0

queryForMapは()(PreparedStatementSetterを取らない)を引数として、その代わりに私の場合、それは[]の代わりにオブジェクトたと仮定しました。これは、preparedstatementsetter自体の値をクエリのパラメータとして挿入しようとしていたことを意味しています。これは明らかに爆発的です。マイク・ニーモニックとアレックスプールへ

感謝。

関連する問題