我正在将Spring Boot与Jpa Repository结合使用。我将一些记录循环保存,保存完所有记录后,将打印以下异常。
java.sql.SQLRecoverableException:InstruçãoFechada 在oracle.jdbc.driver.OracleClosedStatement.getMaxRows(OracleClosedStatement.java:3578)〜[ojdbc6-11.2.0.3.jar:11.2.0.3.0] 在oracle.jdbc.driver.OracleStatementWrapper.getMaxRows(OracleStatementWrapper.java:150)〜[ojdbc6-11.2.0.3.jar:11.2.0.3.0] 在com.zaxxer.hikari.pool.HikariProxyPreparedStatement.getMaxRows(HikariProxyPreparedStatement.java)中[HikariCP-2.7.8.jar:na] 在org.hibernate.resource.jdbc.internal.ResourceRegistryStandardImpl.close(ResourceRegistryStandardImpl.java:165)处[hibernate-core-5.2.16.Final.jar:5.2.16.Final] 在org.hibernate.resource.jdbc.internal.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);
}
}
}
答案 0 :(得分:0)
已解决。
我将ojdbc6的oracle驱动程序版本更改为ojdbc7