gpt4 book ai didi

Android 房间数据库表未更新

转载 作者:太空狗 更新时间:2023-10-29 13:46:48 24 4
gpt4 key购买 nike

我正在尝试使用 RX2 和 room 从我的表中更新一个值。

我的元素是

@Entity(tableName = "myCustomTable")
public class MyItem {

@NonNull
@PrimaryKey
@ColumnInfo(name = "item_id")
@SerializedName("item_id")
private Long item_id;

@ColumnInfo(name = "name")
@SerializedName("name")
private String name;

@ColumnInfo(name = "country")
@SerializedName("country")
private String value;

@SerializedName("image")
@ColumnInfo(name = "image")
private String image;

@ColumnInfo(name = "latitude")
@SerializedName("latitude")
private Double latitude;

@ColumnInfo(name = "longitude")
@SerializedName("longitude")
private Double longitude;

@ColumnInfo(name = "valid")
private boolean valid;

public MyItem (Long item_id, String name, String value, String image, Double latitude, Double longitude, boolean valid) {
this.item_id = item_id;
this.name = name;
this.value = value;
this.image = image;
this.latitude = latitude;
this.longitude = longitude;
this.valid = true;
}

public boolean isValid() {
return valid;
}

public Long getItem_id() {
return item_id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}

public String getImage() {
return image;
}

public void setImage(String image) {
this.image = image;
}

public Double getLatitude() {
return latitude;
}

public Double getLongitude() {
return longitude;
}
}

我的查询是这样的:

@Dao
public interface CustomDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertItem(MyItem item);

@Query("UPDATE myCustomTable SET valid = :isValid WHERE item_id= :id")
void flagQueued(long id, boolean isValid);
}

默认情况下有效为真;

这将由数据库实现调用并转换为可完成的

public class LocalDataSource implements DataSource {
private CustomDao customDao;

@Inject
public LocalPupilDataSource(CustomDao customDao) {
this.customDao = customDao;
}

public Completable flagQueued(long id) {
return Completable.fromAction(() -> customDao.flagQueued(id,false));
}
}

最后,我通过订阅者调用 flagQueued 方法。此订阅者正在成功完成响应。

mCompositeDisposable.add(viewModel.deleteItem(id)
.subscribeOn(schedulerProvider.computation())
.observeOn(schedulerProvider.ui())
.subscribe(() -> Snackbar.make(getActivity().findViewById(R.id.main_layout),
R.string.user_removed, Snackbar.LENGTH_SHORT).show(), error -> Timber.e(error,error.getMessage()) ) );

很遗憾,该值未更新。当然,ID存在于表中。

如有任何建议,我们将不胜感激。

最佳答案

发现问题。经过几个小时的调试。

我在构造函数 this.valid = true; 上分配的默认值出于某种原因破坏了 QUERY。

所以解决办法就是去掉错误值,在我要插入到表中的时候,把我想要的值赋给Item。

是否有任何 GitHub 存储库可供我发布问题?

关于Android 房间数据库表未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52234351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com