본문 바로가기
Java/Spring

[Mybatis] Select시 NullPointerException ... org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible...

by 오늘의개발부 2021. 1. 18.
반응형

평소처럼 Mybatis를 이용해 SELECT 했는데 아래와 같은 에러가 난다.

### SQL: SELECT    SECT, WEATHER_VALUE, WEATHER_CODE, REG_DATE   FROM    TB_WEATHER   WHERE    SECT IN ('SKY', 'T3H')
### Cause: java.lang.NullPointerException
	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
	at com.sun.proxy.$Proxy74.selectList(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)
	at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:139)
	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:76)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
	at com.sun.proxy.$Proxy84.getWeatherData(Unknown Source)

 

Mybatis 쿼리는 아래와 같다.

<select id="getWeatherData" resultType="com.test.weather.WeatherModel">
	SELECT
		SECT, WEATHER_VALUE, WEATHER_CODE, REG_DATE
	FROM
		TB_WEATHER
	WHERE
		SECT IN ('SKY', 'T3H')
</select>

 

 

쿼리를 디비에 찍어보면 이렇게 값이 잘 나온다.

 

DB에 따로 NotNull 속성이 지정된 것도 없고, Mybatis 설정한 것도 없다.

다른 페이지에서 조회되는 데이터들은 NULL값이 포함되어 있더라도 잘 가져온다.

 

쿼리르 조금 바꿔 SELECT 해올 때 WEATEHR_VALUE와 WEATEHR_CODE는 제외하고 SECT와 REG_DATE만 가져오면 잘 가져온다. 

 

다시말해 WEATEHR_VALUE와 WEATEHR_CODE가 NULL인 경우에만 NullPointer가 뜬다. 왤까...

 

<select id="getWeatherData" resultMap="weatherMap">
	SELECT
		SECT, WEATHER_VALUE, WEATHER_CODE, REG_DATE
	FROM
		TB_WEATHER
	WHERE
		SECT IN ('SKY', 'T3H')
</select>

<resultMap type="com.test.weather.WeatherModel" id="weatherMap">
	<result	property="sect" column="SECT" />
	<result property="weather_value" column="WEATHER_VALUE" />
	<result property="weather_code" column="WEATHER_CODE" />
	<result property="reg_date" column="REG_DATE" />
</resultMap>

 

일단 resultMap으로 해보니 에러가 사라지고 Null값이더라도 다 잘 담아온다. 왜 이런걸까. 일단 일정이 급하니 넘어가긴 하는데 찝찝하다...

반응형