본문 바로가기
Error

[JAVA]nested exception is org.apache.ibatis.exceptions.TooManyResultsException 예외

by kkaboo 2024. 2. 20.
728x90

 

TooManyResultsException

 

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 3
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
at com.sun.proxy.$Proxy132.selectOne(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:166)
at one.framework.dao.ONEDaoSupport.select(ONEDaoSupport.java:34)
at one.framework.dao.CommonDao.getString(CommonDao.java:16)

 

🔍 원인

결과 값이 여러개가 리턴되어 발생하는 예외이다. 나의 경우는 쿼리에서 중복제거를 하지 않아서 발생했다.

 

💡 해결

예외를 발생시킨 쿼리 결과

 

이럴 때는 DISTINCT나 GROUP BY절을 이용해 중복되는 결과를 제거해준다.

 

SELECT DISTINCT
       GW_APPROVAL_CD
  FROM T_TEST
 WHERE 1 = 1
   AND LINE_TYPE = 'TEST'
   AND DEL_YN = 'N'

 

또는

 

SELECT
       GW_APPROVAL_CD
  FROM T_TEST
 WHERE 1 = 1
   AND LINE_TYPE = 'TEST'
   AND DEL_YN = 'N'
 GROUP BY GW_APPROVAL_CD

중복 제거된 쿼리 결과

 

 

728x90