MyBatis con classs de datos inmutables en Kotlin

Kotlin tiene este complemento noarg para generar un constructor noarg sintético para las classs sin uno que ayude a JPA (y frameworks como mybatis, hibernate) a crear instancias de un nuevo object. Ex:

data class User(val id: Int, val name: String) 

Dado que estas properties se declaran como val, es decir, inmutables, ¿cómo hacen estos frameworks para crear un object completamente cocido con todos los valores establecidos? El complemento kotlin-noarg solo ayuda a crear instancias de una nueva instancia, pero las properties (id y name) son inmutables y, por lo tanto, no se debe permitir que cambien una vez que se crea el object.

Para ser claros, las cosas funcionan perfectamente bien después de agregar el complemento noarg. La pregunta es cómo, dado que las properties son inmutables.

Esta pregunta SO también habla de esta solución, pero no de cómo.