首页 > 解决方案 > 房间数据库的删除方法不起作用

问题描述

我有这样的 DAO 方法

@Query("DELETE FROM Weather WHERE name = :name")
Completable deleteDataByName(String name);

天气对象

@Entity
public class Weather {

    @PrimaryKey(autoGenerate = true)
    public int id;
    public String name;
    public String date;
    public String description;
    public String icon;
    etc.

deleteDataByName调用方法时不会删除数据。我该如何解决?数据库中有 16 个具有相同名称的 Weather 对象如何删除它们? 在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

标签: javaandroidandroid-room

解决方案


可能您需要使用高于或等于 2.1.0 的房间版本如果您使用 gradle 构建应用程序,请转到项目 gradle 文件并添加以下行:

ext {
    roomVersion = '2.1.0-rc01'
}

然后,您可以使用以下命令在应用程序 gradle 中更新您的房间依赖项:

implementation "androidx.room:room-rxjava2:2.1.0"
implementation "androidx.room:room-runtime:$rootProject.roomVersion"

您也可以在此处找到更多信息。

编辑 这是您可能需要的完整应用程序 gradle(加上您的其他依赖项):

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: 'kotlin-kapt'

android {
  ...
}

allprojects {
    repositories {
        ...
    }
}

dependencies {

    // Room components
    implementation "androidx.room:room-runtime:$rootProject.roomVersion"
    implementation "androidx.room:room-rxjava2:2.1.0"
    kapt "androidx.room:room-compiler:$rootProject.roomVersion"
}

推荐阅读