美文网首页基础架构
Room 合理制定主键很有必要!

Room 合理制定主键很有必要!

作者: 南窗云 | 来源:发表于2018-08-08 16:31 被阅读0次

遇到一个问题,获取到的缓存数据总是少固定几条,百思不得解!

问题分析

经过多方分析,发现少的那几条是 id 相同的,
插入的时候选择的是 RREPLACE,
id 是主键,也就是当id相同时,对象会被替换掉

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun saveJobs(jobItems: List<JobEntity>?)

表结构如下

@Entity(tableName = "rise_job", primaryKeys = ["id"])
data class JobEntity(
        var id: String = "0",
        var itemId: String = "0",
//      根据状态是 近期 未完成,已完成,来筛选Job列表。
        var come: String = JOB_FROM_HOME,
        //      过期时间
        var finished_at: String?,
        //      完成/未完成
        var status: String?,
        //      通过/驳回
        var submit_status: String?,
        //      过期/未过期
        var date_status: String?,
        var tasks: String?
)

解决

忽然顿悟,筛选的是按照 id 和 come 两个维度来进行的,
也就是说,只有当 id 和 come 同时相同时,才应该替换。
也就是说,应该以 这两个维度为主键 来存储,

@Entity(tableName = "rise_job", primaryKeys = ["id","come"])
data class JobEntity(
        var id: String = "0",
        var itemId: String = "0",
//      根据状态是 近期 未完成,已完成,来筛选Job列表。
        var come: String = JOB_FROM_HOME,
        //      过期时间
        var finished_at: String?,
        //      完成/未完成
        var status: String?,
        //      通过/驳回
        var submit_status: String?,
        //      过期/未过期
        var date_status: String?,
        var tasks: String?
)

这样只有 id 和 come 同时相同才会被替换,不会再出现只要id相同就替换的尴尬了。

最后

根据需求,制定合适的主键是很有必要的!
一时大意,可能会浪费比较长的时间。特此记录。

相关文章

  • Room 合理制定主键很有必要!

    遇到一个问题,获取到的缓存数据总是少固定几条,百思不得解! 问题分析 经过多方分析,发现少的那几条是 id 相同的...

  • 保单整理:合理规划很有必要

    今天丽荣经理给我们分享了保单整理,上完培训之后我深深地意识到:客户在保险方面很难是专业的,而且也常常不记得自己的保...

  • Room 修改表主键

    该篇使用较传统方式来修改表的主键,步骤在表结构中将原主键删除添加新主键升级数据库表 升级数据库表步骤创建一个新临时...

  • iOS中FMDB自增id的创建与使用

    FMDB是iOS很常见的数据库使用工具。当我们不需要特定的主键时,一般只需要自增id作为主键(这么做是很有必要的,...

  • 2018年完后变现目标,2019年要给自己打鸡血了

    记得在一本书里看过,制定目标的人比没有制定目标的人,完成目标的概率要高好多。从这个意义上说,制定目标还是很有必要的...

  • 合理制定目标

    今天晚上上了桃计划开营后的第二堂课,易仁永澄老师给桃花岛的小伙伴们带来了非常精彩的课堂,在此谢谢老师啦,么么哒。 ...

  • 制定合理目标

    制定目标需要符合SMART原则,SMART原则,表达了制定一个目标需要具备的5个原则,S=Specific具体的、...

  • 家规很有必要

    在课堂上讲到家庭文化建设,首要的就是要有家规,家庭共同信守的承诺。 家规的制定,需要家庭所有成员的共同参与,这样,...

  • 见识很有必要

    读万卷书,不如行万里路,行万里路不如阅人无数。 我们学习新知识,并不需要一开始就学的很好,也没必要抱着成为专家老手...

  • 很有必要忘记

    女领导站在我身边,给我说让我把货移到上海库去,我当时很费解,为此没有立即执行,想再找理由反驳她一下。今天...

网友评论

    本文标题:Room 合理制定主键很有必要!

    本文链接:https://www.haomeiwen.com/subject/urjxbftx.html