Docs Menu
Docs Home
/ /
Atlas Device SDK
/ / /

주석 유형 LinkingObjects

이 페이지의 내용

  • io.realm.annotations
  • 선택적 요소 요약
  • 요소 세부 정보

구현된 인터페이스:

  • java.lang.annotation.Annotation

한 클래스에서 다른 클래스로의 역관계를 정의하기 위한 주석입니다. 이 주석은 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' 필드에 의해 쿼리될 수 있습니다. 이를 통해 '개' 클래스의 '소유자' 필드를 수동으로 유지 관리할 필요 없이 개 소유자의 속성을 쿼리할 수 있습니다. 연결 객체에는 다음과 같은 속성이 있습니다.

  • 이 링크는 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

public String value

이 주석이 포함된 클래스의 인스턴스에 대한 관계가 포함된 필드의 이름입니다. 이 인수를 제공하지 않으면 주석 처리기가 IllegalArgumentException 와 함께 중단됩니다.

기본값입니다: ""

돌아가기

Index