diff --git a/src/main/java/org/apache/ibatis/type/TypeHandlerRegistry.java b/src/main/java/org/apache/ibatis/type/TypeHandlerRegistry.java index ba25d3c86bf..2a706e26d72 100644 --- a/src/main/java/org/apache/ibatis/type/TypeHandlerRegistry.java +++ b/src/main/java/org/apache/ibatis/type/TypeHandlerRegistry.java @@ -193,6 +193,17 @@ public TypeHandler getTypeHandler(TypeReference javaTypeReference, Jdb @SuppressWarnings("unchecked") private TypeHandler getTypeHandler(Type type, JdbcType jdbcType) { Map> jdbcHandlerMap = TYPE_HANDLER_MAP.get(type); + if (jdbcHandlerMap == null && type instanceof Class){ + Class c = ((Class)type).getSuperclass(); + while(c != null && c != Object.class){ + jdbcHandlerMap = TYPE_HANDLER_MAP.get(c); + if (jdbcHandlerMap != null){ + break; + }else{ + c = c.getSuperclass(); + } + } + } TypeHandler handler = null; if (jdbcHandlerMap != null) { handler = jdbcHandlerMap.get(jdbcType);