通过Android Java中的主键获取Realm对象的正确方法 [英] Proper way to get Realm object by its primary key in Android Java

查看:87
本文介绍了通过Android Java中的主键获取Realm对象的正确方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道是否有一种正确的方法来检索一个对象,因为它在Realm for Android中具有主键。我知道方法 objectForPrimaryKey 确实存在于Swift中,但在Realm for Android中似乎没有这样的对应物。我真的认为做 realm.where(EventInfo.class).equalTo(id,eventInfo.id).findFirst(); 看起来很浪费(at至少它不是手腕友好的)。我错过了一些方法吗?我目前正在使用Realm 1.0.1

I wonder if there's a proper way to retrieve an object given its primary key in Realm for Android. I know the method objectForPrimaryKey does exists in Swift but there seems to be no such counterpart in Realm for Android. I really think that doing realm.where(EventInfo.class).equalTo("id", eventInfo.id).findFirst(); looks like a lot of waste (at least it is not wrist-friendly). Am I missing some method? I'm Currently using Realm 1.0.1

推荐答案

这就是为什么我有像这样的Realm存储库(我写的)

This is why I have a Realm repository like this one (which I wrote)

public class CalendarEventRepositoryImpl
        extends LongRealmRepositoryImpl<CalendarEvent>
        implements CalendarEventRepository {
    public CalendarEventRepositoryImpl() {
        super(CalendarEvent.class);
    }

    @Override
    public Long getId(CalendarEvent calendarEvent) {
        return calendarEvent.getId();
    }

    public void setId(CalendarEvent calendarEvent, Long id) {
        calendarEvent.setId(id);
    }

    public String getIdFieldName() {
        return CalendarEventFields.ID;
    }
}

我继承了一个名为 findOne(realm,id); like

and I inherit a method called findOne(realm, id); like

CalendarEvent event = calendarEventRepository.findOne(realm, id);

但是,默认情况下,它是 realm.where(CalendarEvent.class) .equalTo(id,id).findFirst();

But yes, by default, it's realm.where(CalendarEvent.class).equalTo("id", id).findFirst();

这篇关于通过Android Java中的主键获取Realm对象的正确方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆