注释类型 LinkingObjects


  • @Retention(RUNTIME)
    @Target(FIELD)
    public @interface LinkingObjects
    用于定义从一个类到另一个类的反向关系的注解。 此注解只能添加到RealmResults类型的字段中。
     要公开反向关系以供使用,请创建如下声明:
     
    
     public class Person extends RealmObject {
       String name;
       Dog dog; // Normal relation
     }
    
     public class Dog extends RealmObject {
       // This holds all Person objects with a relation to this Dog object (= linking objects)
       \@LinkingObjects("dog")
       final RealmResults>Person< owners = null;
     }
    
     // Find all Dogs with at least one owner named John
     realm.where(Dog.class).equalTo("owners.name", "John").findAll();
     
     
    在上面的示例中,“Person”通过字段“dog”与“Dog”相关。 这又意味着“Dog”类和“Person”类之间存在隐式反向关系。 这种反向关系由用“@LinkingObject”注释的“RealmResults”字段公开并可查询。 这样就可以查询狗主人的属性,而无需在“Dog”类中手动维护“所有者”字段。

    链接对象具有以下属性:

    • 该链接由 Realm 维护,仅适用于托管对象。
    • 可以像查询普通关系一样查询它们。
    • 可以像正常关系一样关注它们。
    • 在执行“copyToRealm()”时,它们会被忽略。
    • 在执行“copyFromRealm()”时,它们会被忽略。
    • 在使用各种“createObjectFromJson*”和“createAllFromJson*”方法时,它们会被忽略。
    • 如果链接对象发生变化,则不会触发具有“@LinkingObject”字段的对象上的监听器,例如,如果另一个对象删除了对该对象的引用。

    此外,它们还有以下限制:

    • @Ignore 优先。 @Ignore 字段上的 @LinkingObjects 注解将被忽略。
    • 带注解的字段不能为 @Required。
    • 带注释的字段必须是“final”。
    • 注释参数(反向链接字段的名称)是必填项。
    • 注解参数必须是简单的字段名称。 它不能包含句点(“.”)。
    • 带注解的字段的类型必须为“RealmResults<T>”,其中 T 是扩展“RealmModel”的具体类。
    请注意,当反向引用的来源(上例中为“dog”)是“List”时,每个正向引用都有一个反向引用,即使两个正向引用指向同一对象。 如果上述“Person”类定义为: public class DogLover extends RealmObject { String name; List<Dog> dogs = new ArrayList<Dog>; } ,则执行以下代码不会出现错误 Dog fido = new Dog(); DogLover john = new DogLover() john.dogs.add(fido); john.dogs.add(fido); assert john.dogs.size() == 2; assert fido.owners.size() == 2;

    查询反向关系就像查询任何RealmResults 。 这意味着反向关系不能为null ,但可以为空(长度为 0)。 可以查询源类中的字段。这相当于链接查询。 请阅读以了解更多信息

    • 可选元素摘要

      可选元素 
      修饰符和类型 可选元素 说明
      String value
      包含与包含此注解的类的实例的关系的字段的名称。
    • 元素详细信息

      • 字符串
        包含与包含此注解的类的实例的关系的字段的名称。如果未提供此参数,注释处理器将中止并返回IllegalArgumentException
        默认:
        ""