Вложенный Java-запрос к тому же ArrayObject - PullRequest
0 голосов
/ 19 апреля 2019

Текущий код:

mRealm.where(AdditionalData.class)
                        .contains("checklistParticipants.email", a@a.com, Case.INSENSITIVE)
                        .equalTo("checklistParticipants.type", 0)
                        .findAll();

, который возвращает мне результат, похожий на ANY запись.

Я хочу проверить во вложенном запросе, только вернуть запись, если и если оба условия выполнены. аналогично во вложенном запросе запись электронной почты должна быть a@a.com и type = 0

Я попробовал следующий подход, но в итоге получил тот же результат.

mRealm.where(AdditionalData.class)
                        .contains("checklistParticipants.email",a@a.com, Case.INSENSITIVE)
                        .findAll()
                        .where()
                        .equalTo("checklistParticipants.type", 0)
                        .findAll();

I have two records

Ниже на скриншоте показаны 2 дочерних элемента,

  1. email = a@a.com & type = 1
  2. email = x@x.com & type = 0

Проверка царства для обоих значений в подходе "или".

Также пробовал:

  mRealm.where(AdditionalData.class)
                        .equalTo("checklistParticipants.email",a@a.com, Case.INSENSITIVE)
                        .and()
                        .equalTo("checklistParticipants.type", 0)
                        .findAll()
   classpath "io.realm:realm-gradle-plugin:5.8.0"

UPDATE

class AdditionalData {
  String name; 
  RealmList<ChecklistParticipants> checklistParticipants;
}

class ChecklistParticipants{
  String email;
  String type;
  String field3;
}

1 Ответ

0 голосов
/ 19 апреля 2019

Как @EpicPandaForce сказал, что вам нужно использовать LinkingObjects

 class AdditionalData {
      String name; 

      @LinkingObjects(ChecklistParticipants.rlAdditionalData)

      final RealmResults<ChecklistParticipants> linkedChecklistParticipants = null;

      public RealmResults<RealmDocumentLines> getLinkedChecklistParticipants() {
            return linkedChecklistParticipants ;
        }
    }

ChecklistParticipants

    class ChecklistParticipants{
      String email;
      String type;
      String field3;
      AdditionalData rlAdditionalData;

    public AdditionalData getAdditionalData() {
        return rlAdditionalData;
    }

    public void setAdditionalData(AdditionalData additionalData) {
        this.rlAdditionalData = additionalData ;
    }
    }

Затем запрос

RealmResult<ChecklistParticipants> result = mRealm.where(ChecklistParticipants.class)
                                .contains("email", a@a.com, Case.INSENSITIVE)
                                .equalTo("type", 0)
                                .findAll();

, затем цикл по результату и использование getAdditionalData() с каждого предмета

...