从数据库读取而无需重复

时间:2019-07-02 13:15:33

标签: android rx-java android-room

我有一个从db读取的方法(正常工作)

@Insert
Completable insert(List<Weather> data);

例如data.size = 16;

天气对象

public class Weather {

@PrimaryKey(autoGenerate = true)
public int id;
public String name;
public String description;
@Override
public boolean equals(Object obj) {
    if (obj == this) {
        return true;
    }

    if (!(obj instanceof Weather)) {
        return false;
    }

    return name.equalsIgnoreCase(((Weather) obj).name);
}

@Override
public int hashCode() {
    int hash = 3;
    hash = 53 * hash + (name != null ? name.hashCode() : 0);
    return hash;
}
数据对象中的

看起来像: 1伦敦的描述 2伦敦描述 3柏林描述 等等

活动方法

public void readData() {
    mCompositeDisposable.add(mDatabase.getWeatherDao().getAllData()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .distinct()
            .subscribeWith(new DisposableObserver<List<Weather>>() {
                @Override
                public void onNext(List<Weather> weathers) {
                    callback.onCompleteRead(weathers);
                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onComplete() {

                }
            }));
}

我需要,天气没有重复的名称 我在Weather中添加了distinct和override equals和hash代码,但是它不起作用 我该如何解决?也许我覆盖了错误的方法

1 个答案:

答案 0 :(得分:0)

您可以在您的Insert(onConflict = OnConflictStrategy.REPLACE)类中使用此Dao