我有一个从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代码,但是它不起作用 我该如何解决?也许我覆盖了错误的方法
答案 0 :(得分:0)
您可以在您的Insert(onConflict = OnConflictStrategy.REPLACE)
类中使用此Dao