房间持久性库(更新中的问题)

时间:2018-08-02 05:46:52

标签: android kotlin android-room

问题:大家好,我在Room Persistence库中遇到问题。我能够第一次和第二次为数据库中的实体更新创建的行,但是当我第三次查询数据库以更新同一行时,它不会更新。

使用的组件:Kotlin,Android体系结构(Room Persistence Library,ViewModel)和Dagger2

使用的版本: 1.1.1

在以下设备上复制的设备/ Android版本:所有设备

源代码,网址为: https://www.dropbox.com/s/nywrbpnffvb58jl/RoomDemo.zip?dl=0

1 个答案:

答案 0 :(得分:0)

我看了看你的代码。

首先,您在测试实体中使用了@PrimaryKey(autoGenerate = true)。

尽管您声明了ID为0的测试,但注解会为您生成ID。例如,第一项的ID为1,第二项的ID为2,依此类推。

第二,看看您的TestDao。

@Query("SELECT * FROM ${Test.TABLE_NAME}")
    fun getTest(): LiveData<Test>

您只使用一个测试来获得所有项目,而您只会获得所有测试中的第一项。

由于这两个问题,您的第二次保存创建了一个ID为2的测试,而您的getTest()始终返回ID为1的测试,从而将edittext文本改回了。