Realm Java查询两列嵌套对象

时间:2017-01-02 15:25:54

标签: java android realm

这是我的结构:

$ hadoop fs -cat /$PATH/log.txt
[data] [data2] [data3]
[data] [data2] [data3]
[data] [data2] [data3]

我想要查询的所有class Class1 { String name; RealmList<Class2> objects; } class Class2{ String field1; String field2; String field3; } 对象Class1Class2.field1 in ["someValue1"]但不能这样做。

这是我的问题:

Class2.field2 = "someValue2"

以上查询对realm.where(Class1.class).in("objects.field1",getField1Array()).equalTo("objects.field2", getField2()).findAll()or进行了field1操作,其中我想要的是field2操作。

是否可以通过2列嵌套对象进行查询?如果是,那么?

示例:

and

在此查询中

{
    "class1": [
        {
            "name": "JOHN",
            "objects": [
                {
                    "field1": "COMPLETE",
                    "field2": "f2"
                },
                {
                    "field1": "HOLD",
                    "field2": "f3"
                }
            ]
        },
        {
            "name": "JOHN",
            "objects": [
                {
                    "field1": "COMPLETE",
                    "field2": "f1"
                },
                {
                    "field1": "HOLD",
                    "field2": "f3"
                }
            ]
        }
    ]
}

我希望查询返回空列表,但我收到了两个对象。

1 个答案:

答案 0 :(得分:0)

realm.where(Class1.class)
  .in("objects.field1",["COMPLETE", "INPROGESS"])
  .findAll()
  .equalTo("objects.field2", "f3")
  .findAll()

如果这不起作用,那么您需要做的是设置双向关系,并将查询反转为基于Class2而不是Class1