Расширение класса данных Kotlin для использования с JPA?

У Kotlin есть класс Data который автоматически реализует equals и hashcode , но они все еще не могут автоматически использоваться в контексте JPA.

Чтобы исправить это, мне было интересно, что потребуется, чтобы расширить тип Data , чтобы либо присвоить «Бизнес-ключ», либо свойство id которое является final и non updatable и инициализируется UUID который служит в качестве бизнес-ключа , и имеют методы equals() и hashcode() которые используют это свойство для их реализации.

Я думал примерно что-то вроде этого:

 jpa class User(id: JpaId, val name: String, val age: Int) jpa class User(bid: JpaBid, val name: String, val age: Int) 

Вместо использования класса Data следующим образом:

 data class User(bid: long, val name: String, val age: Int) 

Мы используем новый тип класса jpa . У нас также есть два новых типа: JpaId и JpaBid , которые используются для определения того, должно ли свойство id быть UUID или бизнес-ключ, например номер ISBN, sku и т. Д.

Если используется тип JpaId ключ автоматически генерируется. Если используется JpaBid ключ должен быть указан в конструкторе. Это обеспечит, что как только объект JPA будет построен, он может быть однозначно идентифицирован. Мысли? Это что-то очень прямое в Котлине, или нам нужно встать в гриль JVM (Brand new to Kotlin)?

Intereting Posts