Postgre + IBatis 执行查询报 A command is already in progress异常

最近公司一个项目数据库在由Oracle更换为postgre过程中,项目使用的数据库框架为IBatis框架,在升级完后运营测试时,遇到了数据库的异常报错A command is already in progress.出现异常的是一条普通的select查询语句,而同样的查询在Oracle中并没有出现,一开始以为是线程并发或者上一次执行异常导致语句未正常结束,解决方向转向查询多线程和连接池的问题,怀疑每个线程不是独立的连接池的连接实例,但是并没有头绪,按这个报错去查了一些资料,然而没有得到什么有用的信息。

重新整理头绪之后,按这字面意思还是线程执行查询还未完成就又发起了另一个查询,重新调试检查了这一块代码和查询语句,发现查询语句使用了IBatis的懒加载lazyLoad,然后查询结果Entity中用到了懒加载查询的从表Entity,导致在执行主表的查询的同时在映射为Entity的时候就需要在去执行从表查询的语句,就在此时从表的查询语句就会报错,报的错就为上述描述的A command is already in progress.将查询的懒加载去除之后就没有问题。

        由此可见,在使用postgre+ibatis的数据库底层框架时,查询中应该慎用或者不用懒加载,应该考虑使用其他方式来避免懒加载的功能,不能为了少些查询,懒加载可以用到Entity的从表实体时才触发执行查询,就随便使用懒加载,有可能会造成其他的一些不可预见的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值