читать из базы данных без повторения - PullRequest
0 голосов
/ 02 июля 2019

У меня есть метод, который читает из БД (работает нормально)

@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, но это не работает Как я могу это исправить?Может я неправильно переопределил метод

1 Ответ

0 голосов
/ 02 июля 2019

Вы можете использовать это Insert(onConflict = OnConflictStrategy.REPLACE) в вашем Dao классе

...