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
поле не сохраняется в базе данных. Если вам нужно хранить свойства не примитивного типа, используйте отношения или создайте преобразователи типов.