Actualización parcial REST en Spring Boot y Kotlin

Tengo un proyecto con Spring Boot + Kotlin + Morphia.

Necesito agregar una actualización parcial de mis entidades. Mi método de publicación real:

@PostMapping("update/") fun updateStudent(@RequestBody @Valid student: Student, results: BindingResult): ResponseData<Student> { if (results.hasErrors()) return ResponseData(errors = results.errors) if (!student.canEdit(login.user)) return ResponseData() student.save() return ResponseData(data = student) } 

Necesito leer el estudiante de la database y actualizar solo los campos enviados

Hay 2 cosas para implementar. Lectura del estudiante desde el DB y copyndo las properties del alumno de la request.

Publiqué el código de Java, pero no es un problema convertirlo en kotlin

 Morphia morphia = new Morphia(); db = new Mongo(); Datastore ds = morphia.createDatastore(db, appname, user, pass.toCharArray()); morphia.map(Student.class); Student existing= ds.find(Student.class).field("id").equal(student.id).get(); 

Entonces puedes usar Apache BeanUtils

http://commons.apache.org/proper/commons-beanutils/javadocs/v1.8.3/apidocs/org/apache/commons/beanutils/BeanUtils.html#copyProperties%28java.lang.Object,%20java.lang.Object % 29

  BeanUtils.copyProperties(existing, student); 

entonces

 existing.save(); 
  • Usar un object Kotlin en una class generada en time de ejecución
  • Advertencia del comstackdor al usar la anotación @Value en el proyecto Kotlin
  • La desconnection no funciona en la aplicación Spring Boot (no es compatible con el método POST)
  • kotlin y @Valid Spring anotación
  • Kotlin coroutines y Spring Framework 5 types reactivos
  • Spring Injecting util: map en Kotlin con tipo de security
  • No se pudo escribir JSON: no se pudo deserializar; la exception anidada es
  • ¿Puedo usar @autowire (spring-context) para una aplicación de escritorio kotlin?
  • No tiene acceso al controller de arranque de Spring, pero tiene acceso a index.html
  • No se puede crear un oyente de events de datos de spring en Kotlin
  • Cómo crear una consulta hql con left join usando el campo desde el object que se extiende