728x90
반응형
<select id="***" parameterClass="String" resultClass="hashMap" >
SELECT *
FROM 
$TABLE$
</select>

이런식으로 동적으로 테이블에서 컬럼을 가져오는 쿼리를 쓰는데... 첫번째 실행은 무리없이 돌아가나
두번째 부터는 계속해서 

java.sql.SQLException: 부적합한 열 이름
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3319)

요놈의 에러가..
구글링 해보니 역시 같은 상황을 겪고 있는 분들이 더러 있는듯.

ibatis에서는 쿼리문 id마다 캐쉬를 저장하고 있기 때문에
캐쉬값에 따라 result값을 맵핑한다고...

문제 해결을 위해서는 remapResults="true" 속성을 추가해주면, 기존 캐쉬를 무시하고 
현재 쿼리를 기본으로 맵핑한단다.. (default는 false)그래서 결론은 이런식으로..


<select id="***" parameterClass="String" resultClass="hashMap" remapResults="true" >
SELECT *
FROM 
$TABLE$

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,