【发布时间】:2018-07-09 05:57:57
【问题描述】:
我需要更新,如果不存在,则向 ROOM DB 插入行。
我做这个:productRepository.updateProducts(productsResponse.getProductItems());
还有:
@Override
public void updateProducts(final List<ProductItem> products) {
new Thread(() -> {
for (ProductItem item : products) {
Product product = createProduct(item);
productDao.insert(product);
}
}).start();
}
在 DAO 中:
@Insert
void insert(Product products);
但我有方法
@Update
void update(Product product);
还有一些问题:
这两种方法都是无效的。插入后如何返回保存的产品或布尔标志或插入计数?
如果我尝试调用
update,但我没有行,是否会插入?如何更新(如果不是 - 插入)行并返回计数更新或插入的行?
【问题讨论】:
-
你正在寻找的 UPSERT 已经在这里解决了 stackoverflow.com/a/50736568/10516463
标签: android android-room