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

rgo*_*alv 7 java sql sqlite android android-room

我试图在我的DAO中执行以下查询.

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

它给了我这个编译时错误:

Error: no viable alternative at input 'SELECT * FROM objects WHERE obj_id IN :ids'
Run Code Online (Sandbox Code Playgroud)

双方List<String> ids以及String... idsSring[] ids不工作.但是,因为我不知道我在编译时会有多少ID,所以我需要一个列表/数组而不是varargs.

如何使这个SQL查询工作?

Com*_*are 27

你需要括号:

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

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