领域异常:java.lang.UnsupportedOperationException:缺少参数Not

时间:2016-08-19 04:47:42

标签: java android realm

我有一个realm database我希望如下query

  • 我有一个主键列表是Id字段。
  • 现在我有一个ID列表,我想得到没有的对象列表 在列表中有id。

示例:

  • 在数据库中我有一个列表:1,2,3,.... 9。
  • 我的列表ID是:1,2,3。
  • 我想得到4,5,6 ... 9。

所以我按如下方式进行查询:

protected <T extends RealmObject> List<T> getListNotContainIds(Class<T> model, List<Long> idList, String fieldName) {
    checkValueOfPortalRealm();
    RealmQuery<T> query = portalRealmInstance.where(model);
    if (idList != null) {
        query.not().beginGroup();
        for (int i = 0; i < idList.size(); i++) {
            if (i == 0) {
                query.equalTo(fieldName, idList.get(i));
            } else {
                query.or().equalTo(fieldName, idList.get(i));
            }
        }
        query.endGroup();
    }
    return query.findAll();
}

然后,我得到了例外:。

  

java.lang.UnsupportedOperationException:缺少Not的参数                                                                                at io.realm.internal.TableQuery.validateQuery(TableQuery.java:94)                                                                                at io.realm.internal.TableQuery.findAll(TableQuery.java:449)                                                                                在io.realm.RealmQuery.findAll(RealmQuery.java:1434)

我是客人说我的query有问题,有人可以帮忙纠正吗?

1 个答案:

答案 0 :(得分:0)

你应该这样做:

protected <T extends RealmObject> List<T> getListNotContainIds(Class<T> model, List<Long> idList, String fieldName) {
    checkValueOfPortalRealm();
    RealmQuery<T> query = portalRealmInstance.where(model);
    if(idList != null && idList.size() > 0) {
        boolean isFirst = true;
        query = query.beginGroup();
        for (long id : idList) {
            if(!isFirst) {
                 query = query.or();
            }
            query = query.notEqualTo(fieldName, id);
            isFirst = false;
        }
        query = query.endGroup();
    }
    return query.findAll();
}