mybatis Expected one result , but found

问题报错:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 3
关键mapper代码:

  
   
    
   
   
   
   
   
   

继承:
  
   
   
   

分析:
1.在rebateContractObj映射文件中,重新定义了contractId为result属性,覆盖了父类的contract_id(id属性 2.rebateContractObj中有collection集合,内部有属性communicate_address、post_code与父mapper属性定义相同
原理:
1.当定义了 时,返回结果集已配置作为记录key
2.当没有定义时,返回结果集以全部result属性作为记录key
数据分析:
1.communicate_address数据不一致,且没有定义属性(父mapper的被覆盖),导致以全部result作为key,所以会返回多条数据
解决方案:
1.去除rebateContractObj中定义的contractId属性,保留父类
2.更改继承的contractObj,继承的父mapper字段太多且和collection相同了,更改或去除重复字段名

你可能感兴趣的:(javamybatis)