스프링 프레임워크(Spring Framework)
[스프링,MyBatis] java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String
xemaker
2018. 5. 30. 14:23
[스프링,MyBatis] java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String
아 테스트할때 에러가 안나서 잘 되는지 알았는데 나중에 알고 보니 null을 리턴해서 되는 거였다.
하지만 제대로 String 값이 있을 경우는
java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String
이런 에러가 났었다.
흠.. 제대로 코딩, 확인, 테스트 안하고 했을때는 이런 예상치 못한 재앙(?)이 올 수 있다.
MyBatis 코딩할 시 그냥 기존거 복사해서 했더니 제대로 resultType을 못봐서.. ㅜㅜ
<select id="getXX" resultType="Map">
을
<select id="getXX" resultType="String">
이렇게 써주니까 될줄 알았는데.. 안됐다..
별 삽질을 다 해봤다. 이상하다.. 기존에
<select id="getXX" resultType="String">
이렇게 쓴것도 있는데 왜 안되지..
그래서 그냥
<select id="getXX" resultType="Map">
이렇게 써야 하나 생각하다가
<select id="getXX" resultType="java.lang.String">
이렇게 하니까 되었다.
java.lang을 붙여줘야 하나.. 아니 기존에 String만 쓴것도 있는데..
다시
<select id="getXX" resultType="String">
이렇게 하니까 이제야 되었다.
흠..
뭔가 이클립스에서 갱신이 잘 안되었던것 같다.
이클립스를 껏다가 켜봤는데도 안되던데...
클린(Clean)을 한번 해볼걸 그랬나...
여기서 갑자기 드는 생각이 resultType을 안넣어도 되나? 하는 의문이 들어 해봤다.
org.mybatis.spring.MyBatisSystemExeption: nested exception is org.apache.ibatis.executor.ExecutorException:
A query was run and no Result Maps were found for the Mapped Statement 'com.xx.xxx'.
It's likely that neither a Result Type nor a Result Map was specified.
에러메시지에 답이 나와 있다.
Result Type 이나 Result Map이 없는것 같아 보인다.
결론은 select 에서는 Result Type 이나 Result Map은 반드시 써야 하는것 같다.
아 테스트할때 에러가 안나서 잘 되는지 알았는데 나중에 알고 보니 null을 리턴해서 되는 거였다.
하지만 제대로 String 값이 있을 경우는
java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String
이런 에러가 났었다.
흠.. 제대로 코딩, 확인, 테스트 안하고 했을때는 이런 예상치 못한 재앙(?)이 올 수 있다.
MyBatis 코딩할 시 그냥 기존거 복사해서 했더니 제대로 resultType을 못봐서.. ㅜㅜ
<select id="getXX" resultType="Map">
을
<select id="getXX" resultType="String">
이렇게 써주니까 될줄 알았는데.. 안됐다..
별 삽질을 다 해봤다. 이상하다.. 기존에
<select id="getXX" resultType="String">
이렇게 쓴것도 있는데 왜 안되지..
그래서 그냥
<select id="getXX" resultType="Map">
이렇게 써야 하나 생각하다가
<select id="getXX" resultType="java.lang.String">
이렇게 하니까 되었다.
java.lang을 붙여줘야 하나.. 아니 기존에 String만 쓴것도 있는데..
다시
<select id="getXX" resultType="String">
이렇게 하니까 이제야 되었다.
흠..
뭔가 이클립스에서 갱신이 잘 안되었던것 같다.
이클립스를 껏다가 켜봤는데도 안되던데...
클린(Clean)을 한번 해볼걸 그랬나...
여기서 갑자기 드는 생각이 resultType을 안넣어도 되나? 하는 의문이 들어 해봤다.
org.mybatis.spring.MyBatisSystemExeption: nested exception is org.apache.ibatis.executor.ExecutorException:
A query was run and no Result Maps were found for the Mapped Statement 'com.xx.xxx'.
It's likely that neither a Result Type nor a Result Map was specified.
에러메시지에 답이 나와 있다.
Result Type 이나 Result Map이 없는것 같아 보인다.
결론은 select 에서는 Result Type 이나 Result Map은 반드시 써야 하는것 같다.