错误:无法弄清楚如何将此字段保存到数据库中. :房间 Kotlin



我已经阅读了教程和答案,但不知何故它对我不起作用。

这是我正在尝试工作的数据类:

@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
}

这是我的两个转换器:

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)
}
}

但是我仍然在两个字段上都收到相同的错误:

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

使用 Kotlin,您需要添加companion object@JvmStatic

已编辑class BaseTypeConverters(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)
}
}
}

最新更新