韦尔普,我能想到的唯一的选择是
有2代表与结构基本相同,为每一个对象的最后一个版本,第二个 - 所有先前版本。
关键的区别在于历史记录表没有主键(或者是通过将原始主键与版本号拼接而构成的)。
public class Dog extends RealmObject {
@PrimaryKey
private String dogId;
@Index
private String dogName;
private int version;
}
public class DogHistory extends RealmObject {
private String dogId; // decide if primary key from dogId+version is needed
@Index
private String dogName;
private int version;
}
然后映射它们。
DogHistory dogHistory = new DogHistory();
dogHistory.setDogId(currentDog.getDogId());
dogHistory.setDogName(currentDog.getDogName());
dogHistory.setVersion(currentDog.getVersion());
realm.insert(dogHistory); //not "insertOrUpdate" if no PK field
棘手的事情是,你只能够看到他们为“同一个对象”,如果你通过接口暴露getter/setter方法。或者你映射回Dog
,但它会成为一个非托管实例,然后。
听起来像的东西,_might_使用[境界功能]是可能的(https://realm.io/docs/realm-object-server/#realm-functions)。你看过那里吗? –
@AviWarner这些是领域对象服务器功能,我们没有使用它们。 – saabeilin