我有这样的DAO方法
.atom nth-child(1):after
天气对象
@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.
方法时,数据不会被删除。
我该如何解决?
数据库中有16个同名的Weather对象
如何删除它们?
答案 0 :(得分:0)
我遇到了同样的问题,并通过使用androidx组件解决了。尝试使用更新的房间组件
// optional - Kotlin Extensions and Coroutines support for Room
implementation "androidx.room:room-ktx:$room_version"
// optional - RxJava support for Room
implementation "androidx.room:room-rxjava2:$room_version"
答案 1 :(得分:0)
可能您需要使用高于或等于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"
您还可以找到更多信息here。
编辑 这是您可能需要的完整应用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"
}
答案 2 :(得分:0)
我阅读了您的评论:
private void getDeleteByName(String city) { mAppDatabase.getWeatherDao().deleteDataByName(city); } – Vadim Fedchuk 2 days ago
您的说法不正确。您的mAppDatabase.getWeatherDao().deleteDataByName(city)
本身不会做任何事情,可以完成。您必须订阅它才能使其正常工作。