Android 错误:无法确定如何将此字段保存到数据库中:科特林房间
我读过教程和答案,但不知怎么的,它对我不起作用 这是我的数据类,我正在努力工作:Android 错误:无法确定如何将此字段保存到数据库中:科特林房间,android,kotlin,android-room,Android,Kotlin,Android Room,我读过教程和答案,但不知怎么的,它对我不起作用 这是我的数据类,我正在努力工作: @Entity data class Base ( var version: Int, @TypeConverters(MoviesConverter::class) var movies: List<Movie>, @TypeConverters(ResStringsConverter::class) var strings : HashMap<Strin
@Entity
data class Base (
var version: Int,
@TypeConverters(MoviesConverter::class)
var movies: List<Movie>,
@TypeConverters(ResStringsConverter::class)
var strings : HashMap<String, String>
) {
@PrimaryKey
var id = 1
}
@实体
数据库(
变量版本:Int,
@类型转换器(MoviesConverter::类)
电影:列表,
@类型转换器(ResStringsConverter::类)
变量字符串:HashMap
) {
@主键
变量id=1
}
这是我的两个转换器:
class MoviesConverter {
private val gson = Gson()
@TypeConverter
fun toMovies(data: String?): List<Movie> {
if (data == null) {
return emptyList()
}
val listType = object : TypeToken<List<Movie>>(){}.type
return gson.fromJson(data, listType)
}
@TypeConverter
fun fromMovies(movies: List<Movie>): String {
return gson.toJson(movies)
}
}
class ResStringsConverter {
val gson = Gson()
@TypeConverter
fun storedStringToStrings(data: String?): HashMap<String, String> {
if (data == null) {
return HashMap()
}
val listType = object : TypeToken<HashMap<String, String>>() {}.type
return gson.fromJson(data, listType)
}
@TypeConverter
fun stringsToStoredString(strings: HashMap<String, String>): String {
return gson.toJson(strings)
}
}
class电影转换器{
private val gson=gson()
@类型转换器
趣味toMovies(数据:字符串?):列表{
如果(数据==null){
返回空列表()
}
val listType=对象:TypeToken(){}.type
返回gson.fromJson(数据,列表类型)
}
@类型转换器
来自电影的乐趣(电影:列表):字符串{
返回gson.toJson(电影)
}
}
类ResStringsConverter{
val gson=gson()
@类型转换器
有趣的StoredStringToString(数据:String?):HashMap{
如果(数据==null){
返回HashMap()
}
val listType=对象:TypeToken(){}.type
返回gson.fromJson(数据,列表类型)
}
@类型转换器
有趣的stringsToStoredString(strings:HashMap):String{
返回gson.toJson(字符串)
}
}
但这两个字段仍然存在相同的错误:
error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
private java.util.List<com.vladdrummer.moviequizandroid.model.Movie> movies
错误:无法确定如何将此字段保存到数据库中。可以考虑为其添加类型转换器。
私有java.util.List电影
使用Kotlin,您需要添加伴生对象
和@JvmStatic
已编辑:使用类型转换器(MoviesConverter::class)
用于类库
@Entity
@TypeConverters(MoviesConverter::class)
data class Base (
@PrimaryKey
val id : Int,
val movies: List<Movie>
)
data class Movie(val id: Int)
class MoviesConverter {
companion object {
private val gson = Gson()
@TypeConverter
@JvmStatic
fun toMovies(data: String?): List<Movie> {
if (data == null) {
return emptyList()
}
val listType = object : TypeToken<List<Movie>>() {}.type
return gson.fromJson(data, listType)
}
@TypeConverter
@JvmStatic
fun fromMovies(movies: List<Movie>): String {
return gson.toJson(movies)
}
}
}
@实体
@类型转换器(MoviesConverter::类)
数据库(
@主键
val id:Int,
瓦尔电影:列表
)
数据类电影(val id:Int)
类电影转换器{
伴星{
private val gson=gson()
@类型转换器
@JvmStatic
趣味toMovies(数据:字符串?):列表{
如果(数据==null){
返回空列表()
}
val listType=对象:TypeToken(){}.type
返回gson.fromJson(数据,列表类型)
}
@类型转换器
@JvmStatic
来自电影的乐趣(电影:列表):字符串{
返回gson.toJson(电影)
}
}
}
使用Kotlin,您需要添加伴生对象
和@JvmStatic
已编辑:使用类型转换器(MoviesConverter::class)
用于类库
@Entity
@TypeConverters(MoviesConverter::class)
data class Base (
@PrimaryKey
val id : Int,
val movies: List<Movie>
)
data class Movie(val id: Int)
class MoviesConverter {
companion object {
private val gson = Gson()
@TypeConverter
@JvmStatic
fun toMovies(data: String?): List<Movie> {
if (data == null) {
return emptyList()
}
val listType = object : TypeToken<List<Movie>>() {}.type
return gson.fromJson(data, listType)
}
@TypeConverter
@JvmStatic
fun fromMovies(movies: List<Movie>): String {
return gson.toJson(movies)
}
}
}
@实体
@类型转换器(MoviesConverter::类)
数据库(
@主键
val id:Int,
瓦尔电影:列表
)
数据类电影(val id:Int)
类电影转换器{
伴星{
private val gson=gson()
@类型转换器
@JvmStatic
趣味toMovies(数据:字符串?):列表{
如果(数据==null){
返回空列表()
}
val listType=对象:TypeToken(){}.type
返回gson.fromJson(数据,列表类型)
}
@类型转换器
@JvmStatic
来自电影的乐趣(电影:列表):字符串{
返回gson.toJson(电影)
}
}
}
这对我没有帮助either@VladAlexeev我编辑了,用TypeConverter(MoviesConverter::class)再试一次,这对我没有帮助either@VladAlexeev我编辑了,用TypeConverter(MoviesConverter::class)对类基进行了重试