Error: Mybatis 노답에러 – java.sql.SQLException: 부적합한 열 유형

Error

ERROR jdbc.sqltiming – 11. CallableStatement.setNull(110, 1111)
java.sql.SQLException: 부적합한 열 유형

에러발생 상황 기록

Spring Mybatis를 이용해서
파라미터가 200개 가량 있는 Oracle의 PL/SQL구문을 호출하는 상황

손으로 하나하나 쓰기 귀찮아서 DTO의 필드를 잘라붙여서 PL/SQL 구문을 호출했더니 해당 오류가 발생했다.

에러 메세지도 애매하게 어디서 오류가 났는지 정확히 짚어주지 못하고 해서…
노가다로 디버깅을 시작…

해결

필드 이름이 잘못 들어갔을거라고 생각을 했기에 먼저 디비에 접속해서 
PL/SQL 구문을 확인하고 돌아가는 것을 확인했다.

그리고 DTO에서 필드를 20개단위로 붙여넣어가며 확인을 했다.

그 결과~

이 프로젝트에는 lombok을 이용하고 있었는데 mybatis가 getter, setter를 이용해서 DTO에 접근하다 보니 내가 생각했던 것과 좀 다른형태로 이름이 변환되고 있었고 거기서 문제가 발생했다.

mHash : 2글자째 대문자가 오는 상황
Cash : 1글자가 대문자인 상황

ex)

mhash  getMhash()
mHash getMHash()
cash getCash()
Cash getCash()??

이렇게 자동변환이 좀 애매한 상황이 생기는 경우가 있다. 이런부분을 확인해서 수정 해 주고서야 제대로 동작하는 것을 볼 수 있었다.

Facebook API. 그래프 API 탐색기 사용

탐새끼 : https://developers.facebook.com/tools/explorer

왜 이걸 쓰는가?

보통 OAuth Client샘플코드나 라이브러리를 만들어서 데이터를 확인하는데 그 과정을 거치려면 시간낭비도 심하고

코딩에 익숙하지 않거나 … 익숙하더라도 소셜API 호출에 익숙하지 않은 사람은 고생스럽다. OAuth가 표준이라고는 하지만 사이트마다 호출구조가 묘하게 다르기도 하고

facebookapiexplorer2

형광펜 표시한 부분만 API파라미터 넣어서 호출하면 된다. 예를들어

https://developers.facebook.com/docs/graph-api/reference/v2.8/user/feed

여기있는 feed호출을 보면

/{user-id}/feed

The feed of posts (including status updates) and links published by this person, or by others on this person’s profile. There are other edges which provide filtered versions of this edge:

  • /{user-id}/posts shows only the posts that were published by this person.
  • /{user-id}/tagged shows only the posts that this person was tagged in.

All of these derivative edges share the exact same reading structure, however /feed sh

 

라고 나와있으니 요즘 열받는 피자헛코리아 아이디를 넣어주고 feed를 넣고 호출 하면 결과가 출력된다.

/pizzahutkorea/feed

 

API 뽑고 쓰고 별로재미도 없는데 요즘 자주 하게 되네