我试着为设置一个类型转换器
city
在实体上,但仍然存在问题标题中的错误。让我们看看我的实体:
@Entity(tableName = "users")
data class UserEntity(
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
val name: String,
val city: City?
)
是的,有人可以告诉我类型转换器应该应用于字段
城市
这样地:
@TypeConverter(CityConverter::class)
val city: City?
但它也不起作用))
下面是我的数据库,
City
和
CityConverter
@Database(entities = [UserEntity::class], version = 1, exportSchema = false)
// As you can see, I apply type converter here
@TypeConverters(CityConverter::class)
abstract class MyDatabase : RoomDatabase() {
abstract val dao: MyDao
companion object {
@Volatile
private var instance: MyDatabase? = null
fun getInstance(context: Context): MyDatabase {
var currentInstance = instance
if (currentInstance == null) {
currentInstance =
Room.databaseBuilder(context, MyDatabase::class.java, "mydb").build()
instance = currentInstance
return currentInstance
}
return currentInstance
}
}
}
城市
data class City(
val name: String
)
和转换器:
class CityConverter {
private val jsonAdapter = Moshi.Builder()
.addLast(KotlinJsonAdapterFactory())
.build()
.adapter(City::class.java)
@TypeConverter
fun cityToString(city: City?): String {
return city?.let { jsonAdapter.toJson(it) } ?: ""
}
@TypeConverters
fun stringToCity(json: String?): City? {
return json?.let { jsonAdapter.fromJson(json) }
}
}
我按照文档中的内容做了所有操作,但这不起作用(