从数据库中读取而不重复

read from database without repeating

我有一个方法,它从数据库中读取(它工作正常)

@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 柏林描述 等等

activity

中的方法
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 code,但它不起作用 我该如何解决?也许我错了重写方法

您可以在 Dao class

中使用这个 Insert(onConflict = OnConflictStrategy.REPLACE)