Не могу понять, как сохранить это поле в базе данных, сохранить список целых чисел - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть этот объект:

@Entity(tableName = "recipes")
data class Recipe(
        @PrimaryKey val id: Int,
        val name: String,
        @TypeConverters(Converters::class)
        val categories: List<Int>,
        val picture: String,
        @Embedded(prefix = "time")
        val time: Time,
        val people: Int,
        val difficulty: Int,
        val price: Int,

        @Embedded(prefix = "ingredients")
        @TypeConverters(Converters::class)
        val ingredients: List<Ingredient>,

        @Embedded(prefix = "utensils")
        @TypeConverters(Converters::class)
        val utensils: List<Utensil>,

        @Embedded(prefix = "steps")
        @TypeConverters(Converters::class)
        val steps: List<Step>,

        val createdAt: String,
        val updatedAt: String
) : Serializable

И когда я скомпилировал, я получил

Cannot figure out how to save this field into database. You can consider adding a type converter for it.
    private final java.util.List<java.lang.Integer> categories = null;

Проблема в том, что я добавил TypeConverter, он в моем классе. Конвертеры:

@TypeConverter
fun fromIntList(value: List<Int>): String {
    val gson = Gson()
    val type = object : TypeToken<List<Int>>() {}.type
    return gson.toJson(value, type)
}

@TypeConverter
fun toIntList(value: String): List<Int> {
    val gson = Gson()
    val type = object : TypeToken<List<Int>>() {}.type
    return gson.fromJson(value, type)
}

Он должен работать, поскольку знает, что должен преобразовать список Int в строки. Кроме того, я получил эту ошибку, которую я не знаю, откуда она может появиться, и у меня есть это как 5 раз.

 Entities and Pojos must have a usable public constructor. You can have an empty
  constructor or a constructor whose parameters match the fields (by name and type).

Я добавил вложенный класс, такой как Ingredient, Step, Ustensil, но я не публикую код, поскольку он не должен быть связан.

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