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?