주석 유형 LinkingObjects
-
@Retention(RUNTIME) @Target(FIELD) public @interface LinkingObjects
한 클래스에서 다른 클래스로의 역관계를 정의하기 위한 주석입니다. 이 주석은RealmResults
유형의 필드에만 추가할 수 있습니다.사용할 수 있도록 역관계를 노출하려면 다음과 같이 선언을 만듭니다.
위 예제에서 'Person'은 'dog' 필드를 통해 'Dog'와 관련이 있습니다. 이는 'Dog' 클래스와 'Person' 클래스 간에 암시적 역관계가 존재함을 의미합니다. 이 역관계는 공개되며 '@LinkingObject' 주석이 달린 '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();
연결 객체에는 다음과 같은 속성이 있습니다.
- 이 링크는 Realm에서 유지 관리되며 관리 객체에 대해서만 작동합니다.
- 이는 일반 관계처럼 쿼리할 수 있습니다.
- 이는 일반 관계처럼 팔로우할 수 있습니다.
- `copyToRealm()`을 수행할 때는 무시됩니다.
- `copyFromRealm()`을(를) 수행할 때는 무시됩니다.
- 다양한 `createObjectFromJson*` 및 `createAllFromJson*` 메서드를 사용할 때는 무시됩니다.
- '@LinkingObject' 필드가 있는 객체의 리스너는 연결 객체가 변경되는 경우(예: 다른 객체가 이 객체에 대한 참고를 삭제하는 경우) 트igger되지 않습니다.
또한 다음과 같은 제한 사항이 있습니다.
- @Igore가 우선합니다. @Igore 필드에 있는 @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). 소스 클래스의 필드를 쿼리할 수 있습니다. 이는 링크 쿼리와 동일합니다. 자세한 내용 은 를 참조하세요.
-
-
요소 세부 정보
-
value
문자열 값
이 주석이 포함된 클래스의 인스턴스에 대한 관계가 포함된 필드의 이름입니다. 이 인수를 제공하지 않으면 주석 처리기가IllegalArgumentException
와 함께 중단됩니다.- 기본값입니다:
- ""
-
-