求大神帮忙啊!sql执行报rollback失败,但是直接在数据库执行是查得出来数据的

还浮在水面的菜鸟 2016-12-15 09:46:32
select hc.* from GRID_SYSDB.HIS_CITYCASES hc left join GRID_SYSDB.HIS_ACT ha on hc.CASE_ID = ha.CASE_ID
where hc.CASE_ID = ha.CASE_ID and ha.ACT_ID in (
select temp.act_id from (select ha.CASE_ID, ha.ACT_ID, ha.ACT_WILLFINISHDATE, ha.ACT_NAME, haa.ACT_STATUS, hap.RES_STATUS
from GRID_SYSDB.HIS_ACT ha left join GRID_SYSDB.HIS_ACT_ABNORMAL haa on ha.ACT_ID = haa.ACT_ID
left join GRID_SYSDB.HIS_APPROVE hap on haa.ABNORMAL_ID = hap.ABNORMAL_ID where ha.act_id in (
select max(ha.ACT_ID) from grid_sysdb.his_citycases hc
LEFT JOIN grid_sysdb.his_act ha ON hc.case_id = ha.case_id
left join GRID_SYSDB.HIS_ACT_ABNORMAL haa on ha.ACT_ID = haa.ACT_ID
where 1=1 and ha.dept_id in (90) and ha.act_name in ('专业部门办理')
and hc.case_Status != 2 and (ha.out_route not like '%驳回%' or ha.out_route is null )
group by ha.CASE_ID) ) temp) and hc.CASE_STATUS <> 2
and ( ( ha.act_Etime is null and sysdate > ha.act_Willfinishdate ) or ha.act_Willfinishdate < ha.act_Etime)
and ha.act_Willfinishdate >= to_date('2016-12-01 00:00:00','yyyy-mm-dd hh24:mi:ss')
and ha.act_Willfinishdate <= to_date('2016-12-14 23:59:59','yyyy-mm-dd hh24:mi:ss')
and ha.act_operate in (0,1,2) and ha.act_Stime >=to_date('2016-12-01 00:00:00','yyyy-mm-dd hh24:mi:ss')
and ha.act_Stime <= to_date('2016-12-14 23:59:59','yyyy-mm-dd hh24:mi:ss');


这是执行的sql

前提:前台传回三个参数,其中两个是起始时间和结束时间,范围在一个月之外的,程序是无任何问题的

但如果把查询范围缩短至一个月之类,我这里传的是12月1号到12月14号,前台会报回滚失败的错误,tomcat里输出的是“关闭的链接”!!!!可是直接在数据里查询是出的来数据的,而且时间也不慢,不到2秒就可以查出来,截图如下:

...全文
375 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
前几天总算解决了,来结下贴! 虽然还是不明白是什么原因,改了下sql就好了
  • 打赏
  • 举报
回复
引用 2 楼 bcsflilong 的回复:
你的事务是hibernate 管理的 SQL既然没有问题 我建议你看一下hibernate 事务处理那一部分的配置 还有就是超时时间 你这个SQL 在外面执行 需要两秒左右 但是经过hibernate装配 可能时间会长一些 你在dao层执行这段SQL的 前后打印输出 看看花了多久 你把hibernate的超时时间配置的再长一些看看
在dao层执行这段sql,会在最后返回list停住,所以前后打印输出是无法实现的。。。
bcsflilong 2016-12-15
  • 打赏
  • 举报
回复
你的事务是hibernate 管理的 SQL既然没有问题 我建议你看一下hibernate 事务处理那一部分的配置 还有就是超时时间 你这个SQL 在外面执行 需要两秒左右 但是经过hibernate装配 可能时间会长一些 你在dao层执行这段SQL的 前后打印输出 看看花了多久 你把hibernate的超时时间配置的再长一些看看
  • 打赏
  • 举报
回复
这个bug困扰我3天了,也尝试过很多办法,重启程序,改连接数,加索引,优化sql,但是最后还是没解决,求大神帮忙啊
  • 打赏
  • 举报
回复
引用 11 楼 bcsflilong 的回复:
property name="c3p0.time_out">1800</property 再增加一个这个配置
方便加个qq吗或者微信,这个我等晚上才能停服务再做更改
bcsflilong 2016-12-15
  • 打赏
  • 举报
回复
property name="c3p0.time_out">1800</property 再增加一个这个配置
bcsflilong 2016-12-15
  • 打赏
  • 举报
回复
autoReconnect=true&autoReconnectForPools=true 连接地址加这个试试
  • 打赏
  • 举报
回复
引用 6 楼 bcsflilong 的回复:
你把hibernate的 timeout 设置的再长一些试试 看看这个SQL 到底怎么了


还有连接的配置
  • 打赏
  • 举报
回复



引用 6 楼 bcsflilong 的回复:
你把hibernate的 timeout 设置的再长一些试试 看看这个SQL 到底怎么了


我在改老项目的bug啊,这个真心不知道怎么弄了
这是我hibernate的一部分配置
bcsflilong 2016-12-15
  • 打赏
  • 举报
回复


SELECT HC.*
  FROM GRID_SYSDB.HIS_CITYCASES HC
  LEFT JOIN GRID_SYSDB.HIS_ACT HA
    ON HC.CASE_ID = HA.CASE_ID
 WHERE HC.CASE_ID = HA.CASE_ID
   AND HA.ACT_ID IN
       (SELECT TEMP.ACT_ID
          FROM (SELECT HA.CASE_ID,
                       HA.ACT_ID,
                       HA.ACT_WILLFINISHDATE,
                       HA.ACT_NAME,
                       HAA.ACT_STATUS,
                       HAP.RES_STATUS
                  FROM GRID_SYSDB.HIS_ACT HA
                  LEFT JOIN GRID_SYSDB.HIS_ACT_ABNORMAL HAA
                    ON HA.ACT_ID = HAA.ACT_ID
                  LEFT JOIN GRID_SYSDB.HIS_APPROVE HAP
                    ON HAA.ABNORMAL_ID = HAP.ABNORMAL_ID
                 WHERE HA.ACT_ID IN (SELECT MAX(HA.ACT_ID)
                                       FROM GRID_SYSDB.HIS_CITYCASES HC
                                       LEFT JOIN GRID_SYSDB.HIS_ACT HA
                                         ON HC.CASE_ID = HA.CASE_ID
                                       LEFT JOIN GRID_SYSDB.HIS_ACT_ABNORMAL HAA
                                         ON HA.ACT_ID = HAA.ACT_ID
                                      WHERE 1 = 1
                                        AND HA.DEPT_ID IN (90)
                                        AND HA.ACT_NAME IN ('专业部门办理')
                                        AND HC.CASE_STATUS != 2
                                        AND (HA.OUT_ROUTE NOT LIKE '%驳回%' OR
                                            HA.OUT_ROUTE IS NULL)
                                      GROUP BY HA.CASE_ID)) TEMP)
   AND HC.CASE_STATUS <> 2
   AND ((HA.ACT_ETIME IS NULL AND SYSDATE > HA.ACT_WILLFINISHDATE) OR
       HA.ACT_WILLFINISHDATE < HA.ACT_ETIME)
   AND HA.ACT_WILLFINISHDATE >=
       TO_DATE('2016-12-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
   AND HA.ACT_WILLFINISHDATE <=
       TO_DATE('2016-12-14 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
   AND HA.ACT_OPERATE IN (0, 1, 2)
   AND HA.ACT_STIME >=
       TO_DATE('2016-12-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
   AND HA.ACT_STIME <=
       TO_DATE('2016-12-14 23:59:59', 'yyyy-mm-dd hh24:mi:ss');
或者优化一下SQL 这么多的IN 看看不行吧SQL 拆开 在程序里做处理
bcsflilong 2016-12-15
  • 打赏
  • 举报
回复
你把hibernate的 timeout 设置的再长一些试试 看看这个SQL 到底怎么了
  • 打赏
  • 举报
回复
引用 4 楼 bcsflilong 的回复:
你在哪里调用的这个dao 就在调用的代码块前后打印
明白你说的意思,但是现在,程序过几分钟的样子会报错,一直卡在dao层那里,也就是一直在查询,然后会报500,rollback失败, 但是同样的sql在数据库里明明就花了1秒不到的时间呀(原文下的图是0.9秒)
bcsflilong 2016-12-15
  • 打赏
  • 举报
回复
你在哪里调用的这个dao 就在调用的代码块前后打印
【课程简介】Secureboot从入门到精通,全网最全最详细最系统讲解secureboot核心知识点。业务安全的基石是APP安全,APP安全的基石是操作系统安全,操作系统安全的基石是SecureBoot安全。不理解SecureBoot安全无法深入理解业务的安全性,也无法进行良好的安全业务设计。 SecureBOOT安全涉及方方面面的知识,掌握Secureboot后,对整个大系统就有了一个宏观的概念,对整个大系统的其它模块学习都有帮助。Secureboot也是一个高门槛的知识点,涉及到密码学基础知识、ARM硬件基础知识、SOC硬件基础知识(如SOC内集成的efuse、crypto engine、RPMB等)、BootRom的实现、emmc/ufs/nand/nor等知识、各种规范和标准、ATF(TF-A)等软件、安全业务的设计模式…所以当我们充分理解了Secureboot,再回头学习其它知识点是,就会变得比较容易.本课程200多页的PPT,手把手教大家Secureboot的理解和各种安全基础知识。【课程收益】掌握当前主流的多样化的硬件架构示例、软件架构示例、启动示例、刷机示例。从根本掌握Secureboot的核心原理,包括但不限于密码学基础知识、Trustzone架构原理、efuse、RPMB、anti-rollback、crypto engine彻底学会SOC大系统启动流程、刷机流程,熟练掌握ATF核心代码,熟悉相关规范手册。学习六种主流的安全启动经典案例,全面掌握Secureboot的设计模型,能否分析其优缺点,能够独立设计其方案【学习对象】1、大学学生、研究生,科研人员;2、嵌入式开发者、底层开发者、芯片开发者3、汽车电子、手机、服务器等。【课程优势】全网唯一全网最全全网最系统 【课程大纲】 【其它课程】

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧