Android的领域中 如何通过ID列表选择多个对象?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (56)

我正在用Realm数据库构建一个Android应用程序。

我有一个RealmObject子类Article,它有一个id字段(它是int和也是@PrimaryKey)。我想传递给查询列表intS(一Setint[]或其他)的文章ID和只检索文章。

在SQL中会是这样的:

SELECT *
FROM `table`
where ID in (5263, 5625, 5628, 5621) 
提问于
用户回答回答于

更新:

Realm 1.2.0已添加RealmQuery.in()用于与多个值进行比较:

public RealmQuery<E> in(String fieldName, Integer[] values)

原始答案:

如果ID列表为空,@ChristianMelchior的答案会返回所有文章。我希望它返回一个空的RealmResults<Article>。这就是我最终做的事情;

Set<Integer> articleIds = this.getArticleIds();
RealmQuery<Article> query = realm.where(Article.class);
if (articleIds.size() == 0) {
    // We want to return an empty list if the list of ids is empty. 
    // Just search for an id that does not exist.
    query = query.equalTo("id", -30000);
} else {
    int i = 0;
    for (int id : articleIds) {
        // The or() operator requires left hand and right hand elements. 
        // If articleIds had only one element then it would crash with
        // "Missing right-hand side of OR"
        if (i++ > 0) {
            query = query.or();
        }
        query = query.equalTo("id", id);
    }
}
return query.findAll();
用户回答回答于

现在,realm v 1.2.0支持RealmQuery.in()与多个值进行比较。

扫码关注云+社区