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

时间:2018-01-21 18:07:27

标签: java android sql sqlite android-room

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

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

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

List<String> ids

String... ids以及Sring[] idstest1.exe -p line1 -f line1.config 都无法正常工作。但是,由于我不知道编译时会有多少ID,因此,我需要一个列表/数组而不是varargs。

如何使此SQL查询有效?

2 个答案:

答案 0 :(得分:19)

你需要括号:

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

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

答案 1 :(得分:1)

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

然后进行这样的查询

  

例如字符串[] ID或列表ID

     
    

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