У меня проблема с созданием сущностей в Котлине. В частности, речь идет о передаче данных в суперкласс. Найдите пример ниже.
У меня есть абстрактный суперкласс под названием Trackable
, который классы могут расширять. У него есть свойство user
, в котором хранится информация о том, кто создал этот конкретный объект.
abstract class Trackable(
var createdBy: User
) : Persistable()
Класс с именем Contract
теперь будет реализовывать суперкласс Trackable
с ошибкой времени компиляции на данный момент:
@Entity
data class Contract(
var creationDate: LocalDateTime
) : Trackable() // compile error, no user passed here
Итак, поскольку User
является обязательным полем в Trackable
, я должен передать объект User
конструктору Trackable
. Первым, что пришло мне в голову, было создание временного свойства под названием creator
, которое я передаю в Trackable
.
@Entity
data class Contract(
@Transient val creator: User,
var creationDate: LocalDateTime
) : Trackable(creator)
Однако с точки зрения домена это кажется очень грязным решением, поскольку оно загрязняет мой Contract
.
Недавно начав с Kotlin, мне все еще не хватает подходящих и разумных шаблонов для использования. Может ли кто-нибудь помочь мне с этим?