Родитель с ребенком одного типа - как это сопоставить?

Я не знаю, как правильно преобразовать дочерний элемент ProductEntity (тип ProductEntity) в Product.

class ProductEntity(id: EntityID<Int>) : BaseIntEntity(id, Products) {
    companion object : BaseIntEntityClass<ProductEntity>(Products)

    var name by Products.name
    var parentProduct by ProductEntity optionalReferencedOn Products.parentProduct

    fun toPojo() = Product(idValue, name, parentProduct?.toPojo())
}

data class Product(
    val id: Int,
    val name: String,
    val parentProduct: Product?
)

На этот раз у меня есть ошибка: проверка типа столкнулась с рекурсивной проблемой. Подскажите, как это исправить?


person LookBad    schedule 15.09.2020    source источник
comment
Добавьте явный тип в toPojo функцию: fun toPojo() : Product = Product(idValue, name, parentProduct?.toPojo())   -  person Tapac    schedule 16.09.2020


Ответы (1)


Я нашел решение:

class Product(productEntity: ProductEntity) {
    val id: Int = productEntity.idValue
    val name: String = productEntity.name
    val parentProduct = productEntity.parentProduct.toPojo()
}
person LookBad    schedule 16.09.2020