JAVA_peakedness 2017-08-14 13:58 采纳率: 40%
浏览 1532
已采纳

mybatis中的延迟加载问题,拜托各位大神

这个是报错:
32acceba-7d07-11e7-acb7-14dda920ec0e::多的一方1
.......
Exception in thread "main" org.apache.ibatis.executor.ExecutorException: Statement returned more than one row, where no more than one was expected.
at org.apache.ibatis.executor.ResultExtractor.extractObjectFromList(ResultExtractor.java:50)
at org.apache.ibatis.executor.loader.ResultLoader.loadResult(ResultLoader.java:71)
at org.apache.ibatis.executor.loader.ResultLoaderMap$LoadPair.load(ResultLoaderMap.java:207)
at org.apache.ibatis.executor.loader.ResultLoaderMap$LoadPair.load(ResultLoaderMap.java:172)
at org.apache.ibatis.executor.loader.ResultLoaderMap.load(ResultLoaderMap.java:80)
at org.apache.ibatis.executor.loader.cglib.CglibProxyFactory$EnhancedResultObjectProxyImpl.intercept(CglibProxyFactory.java:147)
at com.mybatis.pojo.TableMany$$EnhancerByCGLIB$$49d2b6d7.getOneList()
at com.mybatis.test.ManayToOne.findMany(ManayToOne.java:62)
at com.mybatis.test.ManayToOne.main(ManayToOne.java:28)

这个是测试代码:
static TableManyMapper mapper=null;
public static void main(String[] args) throws Exception {

      String resource="mybatis.xml";
      InputStream input=Resources.getResourceAsStream(resource);    
      SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(input);
      SqlSession sqlSession = factory.openSession();
         mapper=sqlSession.getMapper(TableManyMapper.class);

         findMany();

        sqlSession.commit();
}

     public static void findMany(){ 
        List<TableMany> list= mapper.findMany();
        for (TableMany tableMany : list) {
            System.out.println(tableMany.getM_id()+"::"+tableMany.getM_name());
            System.out.println(".......");
                List<TableOne> oneList=tableMany.getOneList();
                for (TableOne tableOne : oneList) {
                    System.out.println(tableOne.getO_id()+"::"+tableOne.getO_name());
                }

        }
     }

这个是mapper配置:








select * from table_many

  <select id="findLazyOne" parameterType="java.lang.String"  resultType="tableOne" >
    select * from table_one t where t.m_id=#{value}
  </select>
  • 写回答

3条回答 默认 最新

  • 砸死接触 2017-08-15 00:34
    关注

    看报错信息是你的方法本来要求查询的语句只能返回一行数据,但是在真正查询的时候出现了两条或更过,所以报错了。看看数据库m_id会不会有重复的?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已采纳回答 6月15日

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛