Front
[Spring] 스프링 에러: TooManyResultsException
AlexHouse
2022. 3. 21. 11:28
오늘은 오늘의집 프로젝트를 하면서 발생했던 오류에 대해서 기록하고자한다.
오늘 도 또 에러노트가 쌓여져 가기 시작한다.
자 그럼 바로 시작해보자.
selectOne.java 오류
3월 21, 2022 10:07:16 오전 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: 경로 []의 컨텍스트 내의 서블릿 [appServlet]을(를) 위한 Servlet.service() 호출이, 근
본 원인(root cause)과 함께, 예외 [Request processing failed; nested exception is
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.
TooManyResultsException: Expected one result (or null) to be returned by selectOne(),
but found: 54]을(를) 발생시켰습니다.
일반적으로 여러개의 테이블은 List 를 사용하고, 한개의 데이터만을 불러올 때는 selectOne을 사용한다. selectOne을 사용할 때 여러개의 테이블또는 데이터를 사용하게되면 다음과 같은 오류가 나타나게된다. 그래서 본인은 Membermpp.xml에 있는 selectOne 코드라인을 수정하였다.
<select id="selectOne" resultMap="resultMapObj">
SELECT
a.ifmmSeq
,a.ifmmName
,a.ifmmId
,a.ifmmDelNy
,b.ifmpNumber
,c.ifmeEmailFull
,a.regDateTime
FROM
infrMember a
LEFT JOIN
infrMemberPhone b ON a.ifmmSeq = b.ifmmSeq
LEFT JOIN
infrmemberEmail c ON a.ifmmSeq = c.ifmmSeq
</select>
처음에 이렇게 했다가 오류가 발생하였다.
여러개 데이터가 들어오기 때문이다.
selectOne은 단일 데이터를 가져온다.
<select id="selectOne" resultMap="resultMapObj">
SELECT
a.ifmmSeq
,a.ifmmName
,a.ifmmId
,a.ifmmDelNy
,a.regDateTime
FROM
infrMember a
WHERE 1=1
AND ifmmSeq = #{ifmmSeq}
</select>
결국 MemberView.jsp를 띄우기 위해서 selectOne의 데이터를 단일만 가지고 오도록 수정하였다.
결과값
To be continue..