パッケージ io.realm.annotations
注釈型 LinkingObjects
-
@Retention(RUNTIME) @Target(FIELD) public @interface LinkingObjects
あるクラスから別のクラスへの逆の関係を定義するための注釈。 この注釈は、RealmResults
型のフィールドにのみ追加できます。使用の逆関係を公開するには、次のように宣言を作成します。
上記の例では `Python` は `dog` フィールドを通じて `Dog` に関連付けられています。 これは、クラス `Dog` と クラス `proper型` の間に暗黙的な逆関係が存在することを意味します。 この逆関係は、`@LinkingObject` で注釈が付けられた `RealmResults` フィールドによって公開され、クエリ可能になります。 これにより、`Dog` クラスで「所有者」フィールドを手動で維持する必要なく、犬の所有者のプロパティをクエリできるようになります。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();
リンク オブジェクトには次のプロパティがあります。
- リンクは Realm によって維持され、管理対象のオブジェクトに対してのみ機能します。
- これらは通常の関係と同様にクエリできます。
- これらは通常の関係と同様に追跡できます。
- ` copyToRealm() ` の実行時に無視されます。
- ` copyFromRealm() ` を実行するときは、それらは無視されます。
- さまざまな `createObjectFromJson*` および `createAllFromJson*` メソッドを使用する場合は無視されます。
- `@LinkingObject` フィールドを持つオブジェクトのリスナーは、リンク オブジェクトが変更された場合、たとえば別のオブジェクトがこのオブジェクトへの参照を削除した場合にはトリガーされません。
さらに、次の制限があります。
- @Ignore が優先されます。 @Ignore フィールドの @LinkingObjects 注釈は無視されます。
- 注釈付きフィールドを @Required にすることはできません。
- 注釈付きフィールドは ` final` である必要があります。
- 注釈引数(バックリンクされたフィールドの名前)は必須です。
- 注釈引数は単純なフィールド名である必要があります。 ピリオド(「.」)を含めることはできません。
- 注釈付きフィールドは `RealmResults<T>` タイプである必要があります。T は `RealmModel` を拡張する具象クラスです。
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値
この注釈を含むクラスのインスタンスへの関係を含むフィールドの名前。 この引数が指定されていない場合、注釈プロセッサはIllegalArgumentException
で中止されます。- デフォルト:
- ""
-
-