从数据库中读取而不重复
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)
我有一个方法,它从数据库中读取(它工作正常)
@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)