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重新编译。我想我也需要检查一下。