ObjectBox Всегда возвращать нуль для внутренних классов данных в Kotlin

Я использую Retrofit для вызовов API. Я был в состоянии кэшировать класс данных, который содержит только строки и INT. Но теперь я хочу кэшировать другой класс модели, который имеет вложенные классы моделей, как показано ниже.

@Entity data class ConsumptionDashboardResponse(
        @Id(assignable = true)
        var id: Long? = null,
        @Transient
        @SerializedName("data")
        @NameInDb("data_consumption")
        var `data`: DataConsumption,
        @SerializedName("responseCode")
        val responseCode: Int,
        @SerializedName("responseDesc")
        val responseDesc: String,
        @SerializedName("sessionLang")
        val sessionLang: String )

Класс потребления данных:

@Entity
data class DataConsumption(
        @Id(assignable = true)
        var id: Long? = null,

        @Backlink
        @Transient
        @SerializedName("listDivisions")
        var listDivisions: List<Divisions>
)

И Дивизион Класс

@Entity
data class Divisions(
        @Id(assignable = true)
        var id: Long? = null,
        @SerializedName("aggregateBalance")
        val aggregateBalance: String,
        @SerializedName("aggregateConsumption")
        val aggregateConsumption: String,
        @SerializedName("division")
        val division: String,
        @Backlink
        @Transient
        @SerializedName("listConsumption")
        var listConsumption: List<Consumption>,
        @SerializedName("unit")
        val unit: String
)

Класс Divison содержит список потребления

@Entity
data class Consumption(
        @Id(assignable = true)
        var id: Long? = null,
        @SerializedName("aggregateConsumption")
        val aggregateConsumption: String,
        @SerializedName("billingPeriod")
        val billingPeriod: String
)

Я не могу найти, нужен ли мне какой-либо тип пользовательских конвертеров или что еще мне нужно сделать.

Если я пытаюсь прочитать сохраненные данные из ObjectBox, это то, что я получаю:

ConsumptionDashboardResponse(id=4, data=null, responseCode=200, responseDesc=SUCCESS, sessionLang=AR)

1 ответ

Transient поле не сохраняется в базе данных. Если вам нужно хранить свойства не примитивного типа, используйте отношения или создайте преобразователи типов.

Другие вопросы по тегам