java建空存储过程_java - 从java springboot程序池调用存储过程空错误 - SO中文参考 - www.soinside.com...

我有一个springboot应用程序,它经常调用存储过程,执行一些插入并更新到某些表。我可以看到功能上这段代码有效,但过了一段时间我可以打开更多的连接,并且任何运行任何查询的新请求都不满意并且低于错误

'Timeout: Pool empty. Unable to fetch a connection in 30 seconds, none available[size:100; busy:100; idle:0; lastwait:30000].","logger_name":"org.hibernate.engine.jdbc.spi.SqlExceptionHelper"'

下面是调用存储过程的代码,我尝试使用实体管理器更改为不同的实现,但结果相同

对此问题有任何想法,如果没有提及,请告诉我。

@Transactional

private Status bulkSaveOrderInterfaceStatus(String procName,String orderIds,

interfaceType, String errorMsg, String status) {

String outPutPram;

try(Session session = (Session) em.getDelegate()) {

SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor) session.getSessionFactory();

Session ses = sessionFactory.openSession();

ses.beginTransaction();

ProcedureCall storedProcedure = ses.createStoredProcedureCall(procName);

storedProcedure.registerParameter(SqlConstants.BULK_INS_PROCEDURE_ORDERID_INPUTPARM, String.class, ParameterMode.IN).bindValue(orderIds);

storedProcedure.registerParameter(SqlConstants.BULK_INS_PROCEDURE_INTERFACETYPE_INPUTPARM,String.class, ParameterMode.IN).bindValue(interfaceType);

storedProcedure.registerParameter(SqlConstants.BULK_INS_PROCEDURE_ERRORMSG_INPUTPARM,String.class, ParameterMode.IN).bindValue(errorMsg);

storedProcedure.registerParameter(SqlConstants.BULK_INS_PROCEDURE_STATUS_INPUTPARM,String.class, ParameterMode.IN).bindValue(status);

storedProcedure.registerParameter(SqlConstants.PROCEDURE_OUTPUT_MESSAGE, String.class, ParameterMode.OUT);

outPutPram = (String) storedProcedure.getOutputs().getOutputParameterValue(SqlConstants.PROCEDURE_OUTPUT_MESSAGE);

ses.getTransaction().commit();

if (outPutPram.equals(SqlConstants.PROCEDURE_STATUS_SUCCESS)) {

return Status.SUCCESS;

} else {

return Status.ERROR;

}

} catch (Exception e) {

return Status.ERROR;

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值