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

2022-09-02 14:22:31

我正在尝试在我的 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'

两者都不起作用。但是,由于我不知道在编译时我会有多少个id,因此我需要一个列表/数组而不是varargs。List<String> idsString... idsSring[] ids

如何使此 SQL 查询正常工作?


答案 1

您需要括号:

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

(和FWIW,我提交了一个问题,试图在这里得到一个更好的错误消息)


答案 2

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

然后进行这样的查询

例如 String[] ids 或 List ids

Query = @Query(“从obj_id的对象中选择 *”(:ids)“)


推荐