티스토리 뷰

오늘 프로젝트를 하던 도중

Mapped Statemets collection does not contain value for ~ 

라는 에러가 발생 했다


또 다시 어처구니 없는 에러...

해결 방법을 확실히 알아 보고 다음번엔 이러지 말아야겠다


이렇게 다짐하지만, 인간은 늘 같은 실수를 반복하곤 하니

포스팅으로 찾아 볼 수 있도록 정리하려고 한다





일단 에러메시지를 읽어보면,


음....... 매핑된 Statements collection에 mapper를 위한 값이 포함되어 있지 않습니다........(??)


네 그렇다고합니다;;






이런 경우 총 5가지 CASE 중 1개라고 하니, 하나하나 꼼꼼히 체크해 봅시다


1) Mapper id가 틀린 경우

2) Parameter와 bean의 field 명이 틀린 경우

3) sql.xml에서 정의된 namesapce와 DaO에서 호출하는 namespace가 다른 경우

4) mapper가 정의되어 있지 않거나 Spelling이 틀린 경우

5) mapper에 정의된 namespace 명칭이 같은 Application 내에 중복 될 경우






제 경우엔 3) 의 항목에서 에러가 난 것 이었는데요

아래 사진으로 어떻게 된 것인지 확인 해 보겠습니다



일단, proTimetableMapper.xml을 보니 mapper의 namespace가

"mapper.com.myspring.gachon.timetable.proTimetable"로 되어 있네요!




자 이제 위 사진의 mapper를 DaO에서 제대로 호출만 해주면 될텐데..


??


아니? showTimetable 이라니요.........

그렇습니다.. 제가 이 DaO를 showTimetable을 작업하고 그 소스를 복붙 하던과정에서

호출 부를 바꾸지 않은 것입니다(이런!!!!)




위의 showTimetable을 proTimetable로 변경 시키니, 정상적으로 DaO에서 mapper를 호출 할 수 있게 되었습니다

(마치 오래오래 행복하게 살았답니다~ 느낌이군요;)



여튼, 이런 에러가 발생할 경우! 대개 스펠링이나 이런 호출 부분에서 에러가 자주 난다고하니

참고하여 즐프 하셨으면 좋겠습니다!





위의 에러구문에 대한 정보는 http://rex4314.blog.me/146532215 에서 참고하였습니다 

댓글