Realm数据库中的双向链接

时间:2017-05-09 11:53:43

标签: android realm

我想从子表访问父表中的字段。

public class Product extends RealmObject {

    @SerializedName("location")
    private String locationInStore;

     @SerializedName("tags")
    private RealmList<Tag> productTags;
}

public class Tag extends RealmObject {

    @PrimaryKey
    private String name;
    }
}

现在我必须在标签表中搜索名称,然后我必须显示与该标签的搜索和位置匹配的名称。

  RealmResults<Tag> name = mRealm.where(Tag.class).contains("name", tag, Case.INSENSITIVE).findAll(); 

但这只给了我标签名称,如何访问其位置和其他属性。

我也试过

 List<RealmResults<Product>> results = new ArrayList<>();

 results.add(mRealm.where(Product.class).contains("productTags.name", tag, Case.INSENSITIVE).findAll());

上面的查询返回产品对象,但此产品对象包含的标签数组不是与搜索匹配的标签数组。

提前致谢

1 个答案:

答案 0 :(得分:0)

为什么不是数组之一与搜索不匹配的主要想法是Case.INSENSITIVE搜索。因为功能有局限性,所以要小心使用它:

  

查询中的排序和不区分大小写的字符串匹配仅支持“Latin Basic”,“Latin Supplement”,“Latin Extended A”,“Latin Extended B”(UTF-8范围0-591)中的字符集。此外,排序已经完成,因此大写和非大写字母的排序与标准库不同。这意味着' - !'#0&amp;()*,。/:;?_ +&lt; =&gt; 123aAbBcCxXyYzZ是Realm中的实际排序顺序。此外,在使用equalTo()时在查询中设置不区分大小写的标志,notEqualTo(),contains(),endsWith(),startsWith()或like()仅适用于英语语言环境中的字符。

详细了解这些限制here