Avatar ·

Kotlin com JPA/Hibernate: o problema da falta de construtor sem parâmetros (default constructor hell)

Olá a todos! Estou programando em Kotlin há cerca de seis meses e me deparei com um problema ao usar JPA/Hibernate. Tenho uma entidade simples:

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

Ao iniciar a aplicação, o Hibernate lança uma exceção:

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

Entendo que o Hibernate exige um construtor sem parâmetros para criar objetos via reflexão. Mas em Kotlin, as data classes não possuem esse construtor se os parâmetros não tiverem valores padrão. Tentei adicionar @NoArg do Jackson, mas não ajudou. Também ouvi falar do plugin kotlin-jpa, mas não tenho certeza de como configurá-lo corretamente.

Pergunta: como organizar corretamente as entidades JPA em Kotlin para evitar problemas com a falta de construtor padrão? Existe uma abordagem padrão?