Android Room Persistence Library - 如何查找 ID 列表中包含 ID 的实体?

Android Room Persistence Library - How to find entities with ids contained in list of ids?

我正在尝试在我的 DAO 中执行以下查询。

   @Query("SELECT * FROM objects WHERE obj_id IN :ids")
   List<Object> queryObjects(List<String> ids);

它给我这个编译时错误:

Error: no viable alternative at input 'SELECT * FROM objects WHERE obj_id IN :ids'

List<String> ids 以及 String... idsSring[] ids 都不起作用。但是,由于我不知道在编译时我将拥有多少个 id,因此,我需要一个 list/array 而不是可变参数。

如何使这个 SQL 查询有效?

你需要括号:

@Query("SELECT * FROM objects WHERE obj_id IN (:ids)")
List<Object> queryObjects(List<String> ids);

(FWIW,我提交 an issue 以尝试在此处获得更好的错误消息)

您可以设置输入列表或输入数组。

然后像这样进行查询

e.g. String[] ids or List ids

Query = @Query("select * from objects where obj_id in (:ids)")