select *
from dual
<if test = "IF_YN == 'N'">
where IF_YN = #{IF_YN}
</if>
Mapper에 이런식으로 Map으로 넘어온 Parameter의 데이터의 값에 따라 동작을 다르게 하는 동적 쿼리가 선언되어있었다.
그 이후 검색조건을 설정하는데 계속 FOR Input String 에러가 발생하는 상황...
처음엔 Input으로 들어오는 데이터가 문자열인데 어디서 숫자로 변환하려는 코드가 있나 싶어서 코드를 뒤적뒤적 거려보기 시작.
근데 아무리봐도 Controller 단과 Service단에서는 데이터를 넘겨주기만 할뿐. 데이터에 접근해 조작하는 코드는 보이지않는다.
그래서 클라이언트단에서 데이터가 혹시나 Number로 넘어오나? 도 테스트해봤지만 정상적으로 데이터도 잘 넘어오는 상황
대체 이게 무슨상황인가.... 하고 계속 눈알빠지듯이 어디가 문제인지 찾다가보니
다른 쿼리에는 작은 따옴표가 큰 따옴표를 감싸는 형태인데 이 조건식만 큰따옴표가 작은따옴표를 감싸고 있었다.
이 작은 차이를 하나 찾으려고 내가 투자한 시간이 무려 4시간이 넘었다.... 바로 바꿔주고 테스트하니 정상 작동하는것을 확인할수 있었다.
그래서 왜 이런현상이 발생하는가? 똑같은거 아닌가... 해서 검색해보니 XML 파일에서 만큼은 작은따옴표 안에 큰따옴표로 구별해줘야 제대로 된 데이터 인식이 가능한것이라고 한다
혼용해도 쌍으로 묶이는것만 제대로 구별 잘하면 둘다 사용 가능한것으로 알고있었는데... 내가 잘못알고있었나 싶기도하고....
어쨌든 해결!
추가:
좀더 자세한 설명이 있는곳
https://sinpk.tistory.com/entry/Mybatis-if-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B9%84%EA%B5%90
'Study > 에러해결' 카테고리의 다른 글
java.lang.UnsupportedOperationException: null (0) | 2024.09.27 |
---|---|
SQL Error [972] [42000]: ORA-00972: 식별자의 길이가 너무 깁니다 (1) | 2024.09.24 |