즉, 이렇게 썼는데, StringListTypeHandler가 아닌 다른 타입핸들러(FlavorTagListTypeHandler)가 실행됨
원인
타입핸들러 config 설정이 가장 우선순위가 높음..!
과거 mybatis config를 살펴보면..
sqlSessionFactory.setTypeHandlers(new TypeHandler[] {
new StringListTypeHandler(), // 우선순위 낮음
new AlcoholPercentFeelingTypeHandler(AlcoholPercentFeeling.class),
new FlavorTagListTypeHandler() // 우선순위 높음
});
이런 형태였음.
resultMap에서 타입핸들러를 지정했음에도 FlavorTagListTypeHandler가 호출된 것으로 보아
이 config 순서가 가장 높은 우선순위를 가짐을 유출할 수 있음..
따라서
sqlSessionFactory.setTypeHandlers(new TypeHandler[] {
new AlcoholPercentFeelingTypeHandler(AlcoholPercentFeeling.class),
new FlavorTagListTypeHandler(),
new StringListTypeHandler()
});
이렇게 순서를 바꿨더니 List 타입에 StringListTypeHandler이 정상적으로 적용됨.
확인할 것
config 선언순서의 우선순위가 가장 높은게 맞는지?
상식적으로 구체적으로 resultmap에 지정한 타입핸들러가 가장 높아야하는건 아닌지..?ㅎㅎ
이슈 배경
resultMap에 지정한 typehandler가 호출되지 않음
즉, 이렇게 썼는데, StringListTypeHandler가 아닌 다른 타입핸들러(FlavorTagListTypeHandler)가 실행됨
원인
이런 형태였음.
resultMap에서 타입핸들러를 지정했음에도
FlavorTagListTypeHandler
가 호출된 것으로 보아 이 config 순서가 가장 높은 우선순위를 가짐을 유출할 수 있음..따라서
이렇게 순서를 바꿨더니 List 타입에
StringListTypeHandler
이 정상적으로 적용됨.확인할 것
기타
이렇게 명시적으로 타입핸들러 지정안해도,
StringListTypeHandler
가 잘 호출됨!