如何解决为什么 Room 是删除项目而不是更新
我想用 Room 更新我的实体。 我使用了 Update 注释,但是当我将类传递给 update 方法时,该项目被删除而不是更新 这是我的更新代码:
private void updateLocalProduct() {
Product product = new Product();
product.AddToCard = selectedProduct.AddToCard;
product.CartItemCount = selectedProduct.CartItemCount;
product.CreatorUserID = selectedProduct.CreatorUserID;
product.QuantityPerUnit = selectedProduct.QuantityPerUnit;
if (!EdDiscount.getText().toString().equals("")) {
product.offPrice = Integer.parseInt(StringUtils.getNumberFromStringV3(EdDiscount.getText().toString()));
product.Discontinued = Integer.parseInt(EdDiscount.getText().toString());
}
product.Price = Integer.parseInt(StringUtils.getNumberFromStringV3(EdProductPrice.getText().toString()));
product.ProductType = selectedProduct.ProductType;
product.LinkToInstagram = selectedProduct.LinkToInstagram;
product.LinkOut = selectedProduct.LinkOut;
product.id = selectedProduct.id;
product.Deleted1 = selectedProduct.Deleted1;
product.ChatWhitCreator = selectedProduct.ChatWhitCreator;
product.ActiveSave = selectedProduct.ActiveSave;
product.ActiveLike = selectedProduct.ActiveLike;
product.ActiveComment = selectedProduct.ActiveComment;
product.Category = EdCategory.getText().toString() + "." + EdProduct.getText().toString();
product.Description = EdProductDescription.getText().toString();
product.MinimumReorderQuantity = selectedProduct.MinimumReorderQuantity;
product.ReorderLevel = Integer.parseInt(reOrder);
product.SaveCount = selectedProduct.SaveCount;
product.SellCount = selectedProduct.SellCount;
product.SupplierID = selectedProduct.SupplierID;
product.TargetLevel = selectedProduct.TargetLevel;
product.Unit = UnitValue;
product.Saveit = selectedProduct.Saveit;
product.Likeit = selectedProduct.Likeit;
product.LikeCount = selectedProduct.LikeCount;
product.StandardCost = Integer.parseInt(StringUtils.getNumberFromStringV3(EdProductPrice.getText().toString()));
product.CompanyName = selectedProduct.CompanyName;
product.ProductID = selectedProduct.ProductID;
product.Brand = selectedProduct.Brand;
product.MainCategory = selectedProduct.MainCategory;
product.IsParticular = cbStory.isChecked();
product.IsBulletin = cbBulletin.isChecked();
if (MainCategory != null && !MainCategory.equals(""))
product.SubCat1 = MainCategory;
else
product.SubCat1 = EdCategory.getText().toString();
if (SubCat1 != null && !SubCat1.equals(""))
product.SubCat2 = SubCat1;
else
product.SubCat2 = EdProduct.getText().toString();
product.Spare3 = selectedProduct.Spare3;
product.Spare2 = selectedProduct.Spare2;
product.Spare1 = selectedProduct.Spare1;
product.ShowPrice = EdProductPrice.getText().toString();
product.ShowoffPrice = EdDiscount.getText().toString();
product.ShowStandardCost = EdProductPrice.getText().toString();
product.CompanyID = selectedProduct.CompanyID;
product.ViewedCount = selectedProduct.ViewedCount;
product.UpdateDate = selectedProduct.UpdateDate;
product.ProductName = EdProductName.getText().toString();
dbViewModel.updateProduct(product);
dbViewModel.deletePropertiesOneProduct(pid);
for (int i = 0; i < mProperties.size(); i++) {
Properties properties = new Properties();
properties.ProductID = pid;
properties.PropertiesGroup = "مشخصات اصلی";
properties.PropertiesName = mProperties.get(i);
properties.PropertiesValue = mPropertyValues.get(i);
properties.UpdateTime = getCurrentDate();
dbViewModel.insertProperties(properties);
}
}
private String getCurrentDate() {
Date c = Calendar.getInstance().getTime();
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy",Locale.getDefault());
String formattedDate = df.format(c);
return formattedDate;
}
这是 ViewModel 的代码:
public void updateProduct(Product product){
repository.updateProduct(product);
}
这是存储库的代码:
public void updateProduct(Product product) {
localApi.updateProduct(product)
.subscribeOn(Schedulers.io())
.subscribe();
}
这是我的 DAO 代码:
@Update
Completable updateProduct(Product product);
我已经搜索了很多关于这个问题,但我找不到任何东西 为什么应用程序删除实体而不是更新?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。