当前位置: 首页 > 知识库问答 >
问题:

保存后关闭语句

牛兴安
2023-03-14

我在Jpa存储库中使用Spring Boot。我在循环中保存一些记录,在保存所有记录后,会打印下面的异常。

JAVAsql。SQLRecoverableException:oracle的Instruço Fechada。jdbc。驾驶员OracleClosedStatement。oracle上的getMaxRows(OracleClosedStatement.java:3578)~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]。jdbc。驾驶员OracleStatementWrapper。getMaxRows(OracleStatementWrapper.java:150)~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]位于com。扎克瑟。希卡里。水塘HikariProxyPrepared声明。getMaxRows(HikariProxyPreparedStatement.java)[HikariCP-2.7.8.jar:na]位于org。冬眠资源jdbc。内部的ResourceRegistryStandardImpl。关闭(ResourceRegistryStandardImpl.java:165)[hibernate-core-5.2.16.Final.jar:5.2.16.Final]。冬眠资源jdbc。内部的ResourceRegistryStandardImpl。releaseResources(ResourceRegistryStandardImpl.java:307)[hibernate-core-5.2.16.Final.jar:5.2.16.Final]

这是我的代码:

    @Transactional
public void resgatarPremios(List<ResgatePremio> resgates) {

    if(resgates != null && !resgates.isEmpty()) {
        Vendedor vendedor = vendedorRepository.buscarRca(resgates.get(0).getCodigoVendedor());

        for(ResgatePremio resgatePremio : resgates) {

            Premio premio = premioRepository.findById(resgatePremio.getCodigoPremio()).get();
            resgatePremio.setCodigoVendedor(vendedor.getCodigo());
            resgatePremioRepository.save(resgatePremio);

            MovimentacaoContaCorrentePontos movimentacaoContaCorrentePontos = new MovimentacaoContaCorrentePontos();
            movimentacaoContaCorrentePontos.setCodigoContaCorrentePontos(1L);
            movimentacaoContaCorrentePontos.setDataHoraMovimentacao(LocalDateTime.now());
            movimentacaoContaCorrentePontos.setCodigoVendedor(vendedor.getCodigo());
            movimentacaoContaCorrentePontos.setQuantidadePontosMovimentada(resgatePremio.getQuantidade() * premio.getQuantidadePontos() * -1);
            movimentacaoContaCorrentePontosRepository.save(movimentacaoContaCorrentePontos);
        }
    }

}

共有1个答案

王豪
2023-03-14

断然的。

我将ojdbc6的oracle驱动版本更改为ojdbc7

 类似资料:
  • 我最近转到了一个项目,在这个项目中我遇到了很多这种性质的代码--(这是使用jdbc postgres驱动程序) 显然,这段代码已经在生产中运行了一段时间,没有引起问题。 为了进一步澄清,如果我的理解是正确的(即,statement和resultset必须在连接关闭之前而不是之后关闭),我需要在catch和finally之间重复一些代码。修订后的代码如下所示。这可以简化吗? 只是为了透视,这段代码是

  • 关于这个问题,我已经做了相当多的谷歌搜索,我发现的大多数线程都有2年多的历史了,所以我想知道是否有什么改变,或者是否有一个新的方法来解决与这个话题有关的问题。 您在使用IntelliJ(我使用14.0.2)时可能知道,它经常自动保存文件。对我来说,在Java或JavaScript文件中进行更改时,大约需要2秒才能保存更改。有一些选项可能会对此产生影响,例如设置>外观和行为>系统设置>同步>如果应用

  • 如何在应用程序关闭后保存arraylist。这是我的环球班 这是我的旅行班 我想保存数组列表,当我关闭和打开应用程序的数组列表(所有旅行)被保存。如何做到这一点? 我想使用共享首选项,但我不知道如何做到这一点,因为它不是带有Trip的字符串it数组列表。有人能帮我在共享首选项中保存arraylist吗?

  • 编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答问题。 我的问题是, 我必须使用递归来读取字符并保存它们。如果读取的字符是“x”或“X”,那么到目前为止我输入的所有字符都应该在显示屏上向后显示。 f. e. 字符1:a 人物2:c 字符3:7 字符4:x “单词”是:x7ca 如何在不使用数组的情况下“保存”递归字符并向后打印它们? 谢谢你,i.a。

  • 我有一些代码,正在尝试从一个可能或可能没有加密的文件读取。如果它是加密的,那么它在实际数据之前有一个包含几个字节信息的头。访问该文件的逻辑如下所示: 我的问题是: 我的假设是否正确,即关闭文件然后立即打开文件的代码可能会收到此错误,因为Windows仍在释放它,即使.NET Stream.Close方法调用已返回(或using块已退出)? 有没有比延长重试间隔更不垃圾的方法呢?

  • 事实上,我正在制作一个Minecraft插件,我想知道一些插件(不使用DB)是如何在服务器关闭时保存信息的。 例如,如果我们制作了一个等级插件,并创建了一个不同的列表,或者我们将构成每个等级插件的玩家堆叠起来。当服务器关闭并随后重新启动时,列表将再次变为空(当我初始化它们时)。 所以我想知道是否有人知道如何保存这些信息。