Java Realm.insertOrUpdate和copyToOrUpdate don';不起作用,但createObject起作用

Java Realm.insertOrUpdate和copyToOrUpdate don';不起作用,但createObject起作用,java,android,realm,Java,Android,Realm,我有一个我正试图保存的事件列表,如下所示: 我的活动类别: public class Event extends RealmObject { @PrimaryKey private long id; private String title; private Date eventStart; //some more ints and strings } 插入/复制 realm.executeTransaction(new Realm.Transaction() { @Overrid

我有一个我正试图保存的事件列表,如下所示:

我的活动类别:

public class Event extends RealmObject {

@PrimaryKey
private long id;

private String title;
private Date eventStart;
//some more ints and strings
}
插入/复制

realm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        // This doesn't work and exits the method entirely
        realm.insertOrUpdate(events);

        // This doesn't work and exits the method entirely
        realm.copyToRealmOrUpdate(events.get(0));

        // This workaround works but only if there are no duplicates, or primary keys
        for (Event event: events) {
            Event realmEvent = realm.createObject(Event.class, event.getId());
            realmEvent.setTitle(event.getTitle());
            realmEvent.setEventState(event.getEventStart());
        }
    }
});
对于某些类,copyToRealm可以工作,而其他类则不能

我在调试模式下逐步查看了代码,并注意到在生成的DefaultRealmModuleMediator.java中,它似乎无法识别我给它的RealmObject是正确的RealmObject。到了这一部分:

@Override
public void insertOrUpdate(Realm realm, Collection<? extends RealmModel> objects) {
Iterator<? extends RealmModel> iterator = objects.iterator();
    RealmModel object = null;
    Map<RealmModel, Long> cache = new HashMap<RealmModel, Long>(objects.size());
    if (iterator.hasNext()) {
    @SuppressWarnings("unchecked") Class<RealmModel> clazz = (Class<RealmModel>) ((object instanceof RealmObjectProxy) ? object.getClass().getSuperclass() : object.getClass());

    if (clazz.equals(com.example.models.Event.class)) {
        io.realm.EventRealmProxy.insertOrUpdate(realm, (com.example.models.Event) object, cache);
    } else {
        throw getMissingProxyClassException(clazz);
    }
我的应用程序级渐变文件:

dependencies {
    classpath 'com.android.tools.build:gradle:2.3.3'
    classpath 'com.google.gms:google-services:3.0.0'
    classpath "io.realm:realm-gradle-plugin:3.4.0"
}
buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }

    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.22.1'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'realm-android'

repositories {
    maven { url 'https://maven.fabric.io/public' }
}

android {
... //rest of dependencies etc.

apply plugin: 'com.google.gms.google-services'

知道这里会发生什么吗?

看到了类似的问题,但没有解决方案对我有效。那么例外是什么?你的插件顺序是什么?你的构建工具版本是什么?更新了我的问题。听起来我们的注释处理器由于某种原因没有运行。如果查看gradle日志,是否会看到类似以下内容:注意:处理事件?:app:CompiledBugJavaWithJavaCnote:Processing类OtherClass注意:处理类事件注意:创建DefaultRealmModule注意:某些输入文件使用或覆盖不推荐使用的API。注意:有关详细信息,请使用-Xlint:deprecation重新编译。我想我也需要检查一下。