/**
* user中的photos字段转换
*/
open class UserPhotoConverters {
@TypeConverter
fun stringToObject(value: String): List<String> {
val listType = object : TypeToken<List<String>>() {}.type
return Gson().fromJson(value, listType)
}
@TypeConverter
fun objectToString(list: List<String>): String {
val gson = Gson()
return gson.toJson(list)
}
}
当photo字段为空的时候,数据库会crash,报错信息是说“数据库不可为空的字段为空”,实际上对比sql语句,发现所有的not null字段全部是有值的。
原因是使用了
TypeConverter,上面的代码中的转换方式会导致photo字段被系统认为是not null字段了
要解决这个问题,要改为以下这样,入参和返回值都要加?,这样系统认为这个字段是可为空的
/**
* user中的photos字段转换
*/
open class UserPhotoConverters {
@TypeConverter
fun stringToObject(value: String?): List<String>? {
val listType = object : TypeToken<List<String>>() {}.type
return Gson().fromJson(value, listType)
}
@TypeConverter
fun objectToString(list: List<String>?): String? {
val gson = Gson()
return gson.toJson(list)
}
}