Наследование класса данных Kotlin + метод копирования

По личному опыту и обсуждению я понимаю, что, когда data class наследуется от другого класса, унаследованные поля класса, не включены в функцию copy класса данных.

Меня интересуют, какие варианты подходят для решения этой проблемы.

В частности, у меня есть JPA @MappedSuperClass для моих сущностей JPA, которые являются data class . В суперклассе я установил идентификатор объекта, который (по крайней мере, до сих пор) я всегда хочу сделать то же самое. Есть и другие вещи, которые я могу сделать в этом, например, создать созданную дату, последнюю обновленную дату и т. Д.

Параметры, которые я рассмотрел до сих пор:

  1. Скопируйте вставьте идентификатор, дату создания и т. Д. В каждый объект. Плюсы: это просто, и метод копирования работает. Минусы: Fails DRY, и вы не можете обрабатывать все объекты, используя общий суперкласс. (Но может создать для этого интерфейс.)

  2. Выполните переопределение значений суперкласса и передайте их суперклассу.

Вам все равно нужно скопировать значения переопределения в каждый объект, но по крайней мере вам не нужно копировать аннотации.

 @Entity data class Comment( @Lob comment: String, override val id: Long = -1 ) : BaseEntity(id) @MappedSuperclass abstract class BaseEntity( @Id @GeneratedValue(strategy = GenerationType.AUTO) open val id: Long = -1 ) 
  1. ??? Я даже не думаю о третьем варианте, который работает. Есть ли другой способ сделать это? Сделайте идентификатор var и создайте собственный метод копирования каждый раз? Это звучит уродливо.