ObjectBox Всегда возвращать нуль для внутренних классов данных в Kotlin - PullRequest
0 голосов
/ 13 декабря 2018

Я использую 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
)

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

@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 Ответ

0 голосов
/ 13 декабря 2018

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

...