Лучший способ наследования таблиц с помощью kotlin и jpa

#hibernate #kotlin #jpa

#переход в спящий режим #kotlin #jpa

Вопрос:

Каков наилучший способ наследовать объект jpa с помощью kotlin
, например, у меня есть абстрактная сущность User , которая выглядит как

 @Entity
@Table(name = "users")
@Inheritance(strategy = InheritanceType.JOINED)
abstract class User (
  val password: String,
  var email: String
)
  

И я получил вторую сущность PrivateUser , расширенную из User

 @Entity
@Table(name = "private_person")
class PrivatePerson(
    override var password: String,
    override var email: String,
    val name: String
) : User(password, email)   
  

На самом деле мне не нравится переопределять каждое отдельное свойство из суперкласса. Возможно, есть более элегантное решение для этой задачи.
Или это лучший способ обойти

Ответ №1:

Хороший вопрос.

Может быть, вам нужно что-то подобное?

 abstract class User (
        open val password: String = "",
        open var email: String = "")

class PrivatePerson(
        override var password: String,
        val name: String): User(password)  
  

У вас должна быть инициализированная переменная, если вы хотите ее пропустить.