Android Room - Как добавить TypeConverter - PullRequest
0 голосов
/ 09 октября 2019

В настоящее время я изучаю постоянство комнаты и хочу спросить, как создать TypeConverter для пользовательского класса?

Brand.kt

@Parcelize
@Entity(tableName = "brand")
data class Brand (
    @PrimaryKey(autoGenerate = false)
    @ColumnInfo(name = "id")
    val id: Int,

    @ColumnInfo(name = "name")
    val name: String
) : Parcelable

Product.kt

@Parcelize
@Entity(tableName = "product")
data class Product(
    @PrimaryKey(autoGenerate = false)
    @ColumnInfo(name = "id")
    val id: Int,

    @ColumnInfo(name = "brand")
    val brand: Brand, // This variable is my problem, I don't know how to fix it...

    @ColumnInfo(name = "name")
    val name: String,

    @ColumnInfo(name = "price")
    val price: Int
) : Parcelable

Прямо сейчас я сталкиваюсь с ошибкой, которая говорит:

ошибка: не удается выяснитькак сохранить это поле в базе данных. Вы можете добавить конвертер типов для него.

и указать на мой Product класс

Я попытался добавить аннотацию к своему классу Product, например @TypeConverters(Brand.class) и все еще появляется ошибка, я действительно не знаю, что делать.

Любая помощь приветствуется, спасибо.

1 Ответ

1 голос
/ 09 октября 2019

Вместо этого можно использовать @Embedded.

@Embedded
val brand: Brand,

Из документов: -

Может использоваться в качестве аннотации для поляСущность или Pojo, чтобы сигнализировать, что на вложенные поля (т. Е. Поля класса аннотированного поля) можно ссылаться непосредственно в запросах SQL.

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