Android room persistent library - TypeConverter error of error: Cannot figure out how to save fie...

Room存储集合的时候,需要类型转换

e: /Users/jake/Documents/code/riseon_android/riseon-parents-android/app/build/tmp/kapt3/stubs/onlineDebug/com/risecenter/parent/data/local/entity/TaskRecentEntity.java:28: 错误: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
    private com.risecenter.model.UploadImage tasks;

解决步骤

1. 加注解 @TypeConverters ,注意不是 @TypeConverter,这样会报错
/**
 * <pre>
 *     author : jake
 *     time   : 2018/07/31
 *     function   : 近期任务表(家庭作业)
 *     version: 1.0
 * </pre>
 */

@Entity(tableName = "rise_task_recent", primaryKeys = ["id"])
data class TaskRecentEntity(
        val id: String,
        //      过期时间
        var finished_at: String?,
        //      完成/未完成
        var status: String?,
        //      通过/驳回
        var submit_status: String?,
        //      过期/未过期
        var date_status: String?,
        //      任务详情
        @TypeConverters(TasksConverter::class)
        var tasks: List<Tasks>?
) 

就因为上面注解的错了,折腾了好久

编译不过去,重要的事情说三遍

重要的事情说三遍:
加注解 @TypeConverters ,注意不是 @TypeConverter
加注解 @TypeConverters ,注意不是 @TypeConverter
加注解 @TypeConverters ,注意不是 @TypeConverter

2. 转换类代码
/**
 * <pre>
 *     author : jake
 *     time   : 2018/08/02
 *     function   : 任务详情数据转换类
 *     version: 1.0
 * </pre>
 */

class TasksConverter {

    @TypeConverter
    fun getTasksFromString(value: String): List<Tasks>? {
        return Gson().fromJson<List<Tasks>>(value, object : TypeToken<List<Tasks>>() {

        }.type)
    }

    @TypeConverter
    fun storeTasksToString(tasks: List<Tasks>): String {
        return Gson().toJson(tasks)
    }
}
3. bean
data class Tasks(
        val id: String?,
        val type: String?,
        val description: String?,
//        学生作业完成状态
        val finished: String?,
//        学生作业是否被驳回
        val rejected: String?,
        val resource: Resource?
)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容