我如何使用 SQL "NOT IN" 运算符与 Room

How can I use SQL "NOT IN" Operator with Room

@Query("UPDATE items SET saved=:saved WHERE id IN :itemsIds") // works
abstract void method1(List<Long> itemsIds, boolean saved);

@Query("UPDATE items SET saved=:saved WHERE id NOT IN :itemsIds") // ERROR!!
abstract void method2(List<Long> itemsIds, boolean saved);

@Transaction
void updatePreferredItems(@NonNull List<Long> prefItems) {
    method1(prefItems, true);
    method2(prefItems, false);
}

我的 objective 来自 ids 列表 如果项目 id 属于 ids 列表,我想将所有项目的 saved 字段更新为 true,否则为 false否则。

为什么第二个查询生成编译错误?

这是正确的方法吗?

当你这样做时会发生什么:

@Query("UPDATE items SET saved=:saved WHERE NOT(id IN :itemsIds)") // ERROR??
abstract void method2(List<Long> itemsIds, boolean saved);