2017-10-21 17 views
0

존재 연결. 다음저장 객체 기본 키 값이 이미 난 그냥 <code>RealmDB</code>을 사용하기 시작하고 여기 내 주요 <code>User</code> 모델입니다 <code>foreign key</code></p> <p>의 종류를 구현하기 위해, 올바르게 연결된 개체를 저장하는 방법을 알아낼 수 없습니다 관계

public class UserModel extends RealmObject { 
    @PrimaryKey 
    public Long id; 
    public String firstName; 
    public String lastName; 
    public UserSettings userSettingsModel; 
} 

UserSettings 모델이 정의된다.

public class UserSettingsModel extends RealmObject { 
    @PrimaryKey 
    private Long id; 
    public String email; 
    public RealmList<Car> cars; 
} 

그리고 자동차는 모델 자체입니다.

public class Car extends RealmObject { 
    @PrimaryKey 
    private Long id; 
    public String model; 
} 

문제는 내가 UserModel을 저장하려고 할 때이 할당 모든 개체를 다시 시도 할 것입니다. 따라서 사용자 모델을 저장하기 전에 이미 Car 개체를 생성했습니다.

SQL 데이터베이스의 외래 키처럼 참조 할 수 있지만 만들 필요가 없습니다. 데이터베이스에서 사용자를 검색 할 때 기본 키로 모든 관련 데이터를 자동으로로드해야합니다.

영역을 사용하여 이러한 동작을 수행 할 수 있습니까?

답변

0

아직 존재하지 않는 경우 realm.createObject(clazz, pkValue);을 사용하여 관리 객체를 생성 한 다음 값으로 설정하거나 다른 관리 객체를 가져 오는 RealmList에 추가해야합니다.

copyToRealmOrUpdate() (개체에 기본 키가있는 경우)으로 관리되지 않는 개체에서 관리되는 개체를 만들 수도 있습니다.

그리고 데이터베이스에서 사용자를 검색 할 때 모든 관련 데이터가 기본 키로 자동로드됩니다.

RealmList는 관련 개체에 대한 액세스를 허용하며 사실 .where()을 호출하여 쿼리 할 수 ​​있습니다. 그러나 이것은 기본 키를 기반으로하지 않습니다. 이 기능은 "계산 된 필드"에서 추적됩니다.

0

도움 주셔서 감사합니다. copyToRealm 대신 copyToRealmOrUpdate 메서드를 사용하여이 문제를 해결했습니다.