웹 개발 공부 : Back-end/JPA
[JPA 프로젝트 회고 - 4] java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for ~ 에러
Developer KTU
2024. 8. 10. 16:43
반응형
사용자 정의 레포지토리를 만들고, mybatis를 사용하려 했는데, 아래와 같은 에러가 났다.
java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for getMainBoardList
저 에러는 여러가지 이유가 있을 수 있지만, 대게 DAO에서 호출하는 namespace 또는 쿼리명과 해당 mapper.xml의 namespace 또는 쿼리명과 일치하지 않는 경우 발생하는 에러인데, 난 분명 DAO에서 호출하는 namespace, 쿼리명과 mapper.xml의 namespace, 쿼리명이 일치하는데도 계속 해당 에러가 뜨길래, applications.yml의 mapper-location을 계속 수정해보고, namespace와 쿼리명을 바꿔봐도 해당 오류로 한 1시간 이상은 뻘짓을 한 것 같다..
<해결법>
1) applicationl.yml의 mapper-location을 수정했다.
classpath는 기본적으로 ~/src/main/resources/ 경로를 기본으로 한다.
mybatis:
mapper-locations: classpath:mapper/*.xml
2) mapper.xml의 경로를 ~/src/main/resources/mapper/로 옮겼다.
이전 마이그레이션 전 프로젝트에서는 ~/src/main/java/com/OOO/mapper/ 경로에 넣어도 큰 문제가 없었는데, JPA + Mybatis 프로제그로 마이그레이션 하니 여기선 문제가 된 것이다.
앞으로는, Mybatis 사용 시, 경로에 대한 기본개념을 다시 숙지한 후 사용해야겠다!
반응형