Home » Android » java – Android Room Persistence Library – How to find entities with ids contained in list of ids?

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

Posted by: admin June 15, 2020 Leave a comment

Questions:

I am trying to do the following query in my DAO.

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

It gives me this compile-time error:

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

Both List<String> ids as well as String... ids and Sring[] ids don’t work. However, since I don’t know how many ids I will have in compile-time and therefore, I need a list/array and not varargs.

How can I make this SQL query work?

How to&Answers:

You need parentheses:

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

(and FWIW, I filed an issue to try to get a better error message here)

Answer:

You can set either list of input or array of input.

and then make a query like this

e.g. String[] ids or List ids

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