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)对类基进行了重试