주석 유형 LinkingObjects
io.realm.annotations
구현된 인터페이스:
한 클래스에서 다른 클래스로의 역관계를 정의하기 위한 주석입니다. 이 주석은 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) 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' 필드에 의해 쿼리될 수 있습니다. 이를 통해 '개' 클래스의 '소유자' 필드를 수동으로 유지 관리할 필요 없이 개 소유자의 속성을 쿼리할 수 있습니다. 연결 객체에는 다음과 같은 속성이 있습니다.
이 링크는 Realm에서 유지 관리되며 관리 객체에 대해서만 작동합니다.
이는 일반 관계처럼 쿼리할 수 있습니다.
이는 일반 관계처럼 팔로우할 수 있습니다.
`copyToRealm()`을 수행할 때는 무시됩니다.
`copyFromRealm()`을(를) 수행할 때는 무시됩니다.
다양한 `createObjectFromJson*` 및 `createAllFromJson*` 메서드를 사용할 때는 무시됩니다.
'@LinkingObject' 필드가 있는 객체의 리스너는 연결 객체가 변경되는 경우(예: 다른 객체가 이 객체에 대한 참고를 삭제하는 경우) 트igger되지 않습니다.
또한 다음과 같은 제한 사항이 있습니다.
@Igore가 우선합니다. @Igore 필드에 있는 @LinkingObjects 주석은 무시됩니다.
주석이 달린 필드는 @Required일 수 없습니다.
주석이 달린 필드는 'final'이어야 합니다.
주석 인수(역링크된 필드의 이름)는 필수입니다.
주석 인수는 간단한 필드 이름이어야 합니다. 마침표('.')를 포함할 수 없습니다.
주석이 달린 필드는 'RealmResults<T>' 유형이어야 하며, 여기서 T는 'RealmModel'을 확장하는 구체적인 클래스입니다.
역방향 참고(위의 경우 'dog')의 소스가 'List'인 경우, 두 정방향 참고가 모두 동일한 객체에 대한 경우에도 각 정방향 참고에 대한 역방향 참고가 있습니다. 위의 `Person` 클래스가 다음과 같이 정의된 경우:
public class DogLover extends RealmObject { String name; List<Dog> dogs = new ArrayList<Dog>; } then the following code executes without error
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 |
---|
이 주석이 포함된 클래스의 인스턴스에 대한 관계가 포함된 필드의 이름입니다. 이 인수를 제공하지 않으면 주석 처리기가 기본값입니다:
|