У меня есть этот объект:
@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, но я не публикую код, поскольку он не должен быть связан.