Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

ERROR DE SERIALIZACION EN METODO PUT

Hola, equipo Alura y comunidad Alura, estoy siguiendo los pasos del profe para realizar el proceso del put de la api.

@PutMapping("/api/medico")
    public Medico actualizarMedico(){
        return medicoRepository.getReferenceById(2L);
    }

modifique el metodo para que me retornara a modo de prueba el medico que venga de la base de datos pasandole el id 2, el cual si existe en mi base de datos.

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

2 respuestas

¡Hola Eluizer! Espero que estés bien.

El código estás devolviendo un objeto de tipo "Medico" utilizando el método "getReferenceById" del repositorio. Sin embargo, no estás pasando ningún parámetro al método, por lo que siempre te devolverá el médico con el ID 2.

Hay varias formas de escribir para solucionar te recomendaría que modifiques tu código para que el método PUT acepte un objeto de tipo "Medico" como parámetro y luego actualice ese médico en la base de datos.

@PutMapping("/api/medico")
public Medico actualizarMedico(@RequestBody Medico medico){
    // Lógica para actualizar el médico en la base de datos
    Medico medicoActualizado = medicoRepository.actualizarMedico(medico);
    return medicoActualizado;
}

En este ejemplo, el método PUT acepta un objeto de tipo "Medico" como parámetro utilizando la anotación "@RequestBody". Luego, puedes utilizar la lógica necesaria para actualizar el médico en la base de datos y devolver el médico actualizado.

Recuerda que debes implementar la lógica para actualizar el médico en la base de datos en el método "actualizarMedico" del repositorio.

Espero que esta solución te sea útil. Mucho éxito en todo lo que te propongas y continúa con ese empeño.

Recuerda que si tienes alguna duda sobre el contenido, estaremos aquí para ayudarte. ¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Hola Adriana! gracias por responder.

Te cuento : ) segui haciendo pruebas con este metodo y el inconveniente es el siguiente y tambien creo que pude dar con la solucion

Si en el metodo no retorno nada al cliente el codigo funciona correctamente, si retorno un DTO funciona correctamente, pero si por el contrario retorno la clase Medico que viene de la base de datos me da error de serializacion al momento de convertir esa clase Medico a json que se va a mostrar en el cliente.

Ayudandome con chatgtp, encontre la siguiente solucion: @JsonIgnoreProperties({"hibernateLazyInitializer"})