Avatar ·

Kotlin con JPA/Hibernate: el problema de la falta de constructor sin parámetros (default constructor hell)

¡Hola a todos! Llevo escribiendo en Kotlin aproximadamente medio año, y me he encontrado con un problema al usar JPA/Hibernate. Tengo una entidad simple:

@Entity
data class User(
    @Id @GeneratedValue
    val id: Long = 0,
    val name: String,
    val email: String
)

Al iniciar la aplicación, Hibernate lanza una excepción:

org.hibernate.InstantiationException: No default constructor for entity: com.example.User

Entiendo que Hibernate requiere un constructor sin parámetros para crear objetos mediante reflexión. Pero en Kotlin, las data classes no tienen ese constructor si los parámetros no tienen valores por defecto. Intenté agregar @NoArg de Jackson, pero no ayudó. También he oído hablar del plugin kotlin-jpa, pero no estoy seguro de cómo configurarlo correctamente.

Pregunta: ¿cómo organizar correctamente las entidades JPA en Kotlin para evitar problemas con la falta de un constructor por defecto? ¿Existe una solución estándar que