【发布时间】:2021-02-25 01:15:08
【问题描述】:
这是我唯一的实体:
@Entity(tableName = "sticker_packs")
class StickerPack(
@PrimaryKey(autoGenerate = true)
val identifier: Int = 0,
var name: String,
var publisher: String,
@TypeConverters(StickerConverter::class)
private var stickers: List<Sticker> = emptyList())
这是我的自定义 Sticker 类:
data class Sticker(
val emojis: List<String>,
var imageDir: String,
var size: Long = 0L)
这是我的数据库类:
@Database(entities = [StickerPack::class], version = 1)
//I get this same error with or without my Typeconverters here
@TypeConverters(StickerConverter::class)
abstract class StickerPacksDatabase: RoomDatabase() {
abstract val stickerPacksDao: StickerPacksDao
companion object{
@Volatile
private var INSTANCE: StickerPacksDatabase? = null
fun getInstance(context: Context): StickerPacksDatabase{
synchronized(this){
var instance = INSTANCE
if(instance == null){
instance =
Room.databaseBuilder(context.applicationContext, StickerPacksDatabase::class.java, "sticker_packs_database")
.build()
INSTANCE = instance
}
return instance
}
}
}
}
这是我的typeconverter
class StickerConverter {
@TypeConverter
fun stickersToJson(stickers: List<Sticker>): String = Gson().toJson(stickers)
@TypeConverter
fun jsonToStickers(json: String): List<Sticker> = Gson().fromJson(json)
private inline fun <reified T> Gson.fromJson(json: String): T = fromJson(json, object: TypeToken<T>() {}.type)}
我并不想做任何花哨的事情,只是使用 Gson 将列表转换为字符串,但是在尝试构建项目时,我收到以下错误:
无法弄清楚如何将此字段保存到数据库中。你可以考虑为它添加一个类型转换器。
但这正是我想要做的。我可能在某个地方犯了错误,但我似乎找不到它。我尝试将@TypeConverters 符号移动到任何可能的地方,但问题仍然存在
【问题讨论】:
标签: android kotlin gson android-room