본문 바로가기
Development/Spring

[JAVA 에러] java.lang.IllegalStateException: Ambiguous mapping found.

by 메정 2021. 9. 23.

문제상황

IllegalStateException 에러가 발생했다는 뜻 ...

java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'performanceController' method ~~~

해결방법

알고보니, Controller의 @RequestMapping 의 값이 중복되어 나타나는 에러라고 한다!

[에러가 발생할 수 있는 상황]
1. mapper id가 다를경우
   - mapper파일(MyBatis의 쿼리문을 등록한 XML파일)에 <select id=''.. 에 id와 
   - mapper파일에 직접 접근하는 java파일(DAO나 service)에 적어놓은 id값이 다른 경우 
2. Parameter와 bean의 필드명이 틀린 경우
3. mapper파일(MyBatis의 쿼리문을 등록한 XML파일)에 정의된 네임스페이스(namespace)와 
   mapper파일에 직접 접근하는 java파일(DAO나 service)에서 호출하는 네임스페이스(namespace)가 다를 경우
4. MyBatis config파일에 mapper가 정의가 되어 있지 않거나 Spelling이 틀린 경우
5. mapper에 정의된 namespace 명칭이 같은 Application 내에 중복 될 경우

image

그래서 위 사진을 아래와 같이 1개의 함수로 합쳐 해결하였다.

//@param : 받은 날짜와 공연 이름으로 해당 공연 좌석 정보 보여주기
    @GetMapping("/info")
    public ResponseEntity showPerformanceInfo(@Validated @RequestParam(value = "date", required = true) Date date,
                                              @Validated @RequestParam(value = "title", required = false) String title) {
        return null;
    }

처음 이렇게 생성했던 이유는 1개는 date는 무조건 받고, title은 받거나 안받거나 할 수 있도록 api를 설계해두었는데 required 속성으로 쉽게 해결할 수 있었다. ㅎㅎ ....

참고사이트

'Development > Spring' 카테고리의 다른 글

Spring의 Transaction  (0) 2021.09.23
Spring? Spring Boot? Spring MVC?  (0) 2021.09.23
Spring Boot 로그 설정 (Logback)  (0) 2021.09.23
java.util.Optional T 클래스  (0) 2021.09.23
Java Optional 바르게 쓰기  (0) 2021.09.23

댓글