0

現在のコード:

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();

私は2つのレコードを持っています

以下のスクリーンショットは、2 つの子アイテムを示しています。

  1. 電子メール = a@a.com & タイプ = 1
  2. 電子メール = x@x.com &タイプ = 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"

アップデート

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

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

1 に答える 1

0

@EpicPandaForceが言ったように、LinkingObjectsを使用する必要があります

 class AdditionalData {
      String name; 

      @LinkingObjects(ChecklistParticipants.rlAdditionalData)

      final RealmResults<ChecklistParticipants> linkedChecklistParticipants = null;

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

チェックリスト参加者

    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()各アイテムから使用します

于 2019-04-19T18:08:56.487 に答える