Mybatis ResultMap 无法继承父resultMap的映射关系

**

结论: 子resultMap的type不是抽象类的时候才能够成功继承父resultMap的映射关系,否则子resultMap的extends属性写了跟没写一样。。。

**

今天在实现一个贷款功能的时候,需要查询贷款对象,及其聚合的额度条件对象,发现现有的sql没有把额度条件查出来,于是只好自己添加了一个sql,相应的就要加一个resultMap,继承原来的resultMap。

<resultMap id="SubResultMap" type="Loan"  extends="BaseResultMap">
    <association property="amount" resultMap="com.xxx.AmountDao.BaseResultMap"/>
  resultMap>

写完后运行这个sql相关的方法,报错:

严重: Servlet.service() for servlet [SpringMVC] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.glodon.gcf_platform.bo.loan.Loan with invalid types () or values (). Cause: java.lang.InstantiationException] with root cause
java.lang.InstantiationException
    at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:48)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)

哦,忘了说,我上面resultMap里的type是个抽象类,但是它父类已经指定了根据不同结果创建不同的具体类的实例

"int" column="loan_type">
      <case value="2" resultType="Loan1">
      case>
      <case value="1" resultType="Loan2"/>
    

于是猜想这个配置难道继承不下来??于是将这个复制了一份到子resultMap中。再次调用方法时不报错了,但是发现,什么都没查出来。。。。
Mybatis ResultMap 无法继承父resultMap的映射关系_第1张图片

最后多次试验发现,子resultMap的type不是抽象类的时候就能够成功继承父resultMap的映射关系。

你可能感兴趣的:(Mybatis)