I am trying to update several records from spring jdbc but this is not working what am i doing wrong?
does not respond when I make a request, but the data in the array is arriving, try without array and the same thing happens.
I am sending an array of objects to be able to update but I get to the method cstmt.executeQuery(); it does not execute and it waits and does not go any further.
@PostMapping(path = "/updateEstadoPlanesServicios", produces = MediaType.APPLICATION_JSON) public String updateEstadoPlanesServicios(@RequestBody String lista) { ServiciosPlanesUpdateDTO[] fromJson = gson.fromJson(lista, ServiciosPlanesUpdateDTO[].class); return gson.toJson(consultaPlanesComisionPortal.estadoPlanesServicios(fromJson)); }
@Transactional(rollbackFor = { Exception.class }) public replyDTO estadoPlanesServicios(ServiciosPlanesUpdateDTO[] list) { System.out.println("data: "+list.toString()); replyDTO re = new replyDTO(); int count = 0; try { StringBuilder update = new StringBuilder(); update.append("UPDATE Detalleproductoservicio "); update.append(" SET loginregistro = ?, estado = 'D', fechasys = sysdate "); update.append(" WHERE codigo_Servicio = ? and codigo_planproductoservicio = ? and NIT = ?"); try (Connection conexion = obtenerConexion.obtenerConexion(0); PreparedStatement cstmt = conexion.prepareStatement(update.toString())) { conexion.setAutoCommit(false); for(ServiciosPlanesUpdateDTO elements: list) { //System.out.println(elements.toString()); System.out.println("1 element:"+elements.getLoginRegistro()); System.out.println("2 element:"+elements.getCodigoServicio()); System.out.println("3 element:"+elements.getCodigoPlanProductoServicio()); System.out.println("4 element:"+elements.getNit()); cstmt.setString(1, elements.getLoginRegistro().trim()); cstmt.setInt(2,Integer.parseInt( elements.getCodigoServicio().trim())); cstmt.setString(3, elements.getCodigoPlanProductoServicio().trim()); cstmt.setString(4, elements.getNit().trim()); count = cstmt.executeUpdate(); //cstmt.execute(); //count++; //cstmt.addBatch(); //cstmt.executeBatch(); // } conexion.commit(); if(count > 0) { re.setMessage("Status ok," +"count: "+count); re.setExitoso(true); }else { re.setExitoso(false); re.setMessage("failed"); } } } catch (Exception e ) { re.setExitoso(false); re.setMessage(e.getMessage()); } return re; }
Advertisement
Answer
this is working I found the problem apparently the database conflicts when I have Oracle SQL Developer open and I make the request by postman this is a little weird but I closed Oracle Developer and it worked.