Realm IllegalStateException: проверка схемы не удалась - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь использовать базу данных Realm в моем проекте
Вот мои фрагменты кода

В приложении Java-код

public class CoreApplication extends Application {
private static CoreApplication sInstance;
public static final String F_PREFERENCE = "K_PREFERENCES";
public static Realm realm;

@Override
public void onCreate() {
    super.onCreate();
    sInstance = this;
    LocaleManager.setLocale(this);

    realm.init(this);
    realm = Realm.getDefaultInstance();
    RealmConfiguration realmConfiguration = new RealmConfiguration.Builder()
            .name("mydb.realm")
            .schemaVersion(2)
            .build();
    Realm.setDefaultConfiguration(realmConfiguration);

}

@Override
public void onTerminate() {
    Realm.getDefaultInstance().close();
    super.onTerminate();
}

}

RealmObject Java-класс

public class CashierTable extends RealmObject implements Serializable {
@Index
@PrimaryKey
private long id;
private String name = "";
private String password = "";
public long getId() {
    return id;
}
public void setId(long id) {
    this.id = id;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

 }

Когда я пытаюсь вызвать эту функцию, когда приложение запущено. У меня есть исключение

 public static CashierTable getSingleCashierTable() {
    CoreApplication.realm = Realm.getDefaultInstance();
    AtomicReference<CashierTable> cashierTable=new AtomicReference<>();
    CoreApplication.realm .executeTransaction(realm -> {
        cashierTable.set(realm.where(CashierTable.class).findFirst());
    });
    return cashierTable.get();
}

Вот мой лог-результат

java.lang.RuntimeException: Unable to create application com.unipay.posApp.CoreApplication: java.lang.IllegalStateException: Schema validation failed due to the following errors:
- Type 'CashierTable' appears more than once in the schema.

Я снял наличные, но все еще имею ту же проблему.
Может кто-нибудь объяснить мне, что не так в моем коде?

1 Ответ

0 голосов
/ 06 июля 2018

У вас не может быть двух классов RealmObject с одним и тем же именем класса дважды, если вы не используете Realm 5.0+ и не используете @RealmClass(name="..., чтобы указать другое имя таблицы хотя бы для одного из ваших классов.

package io.package.first;

public class Dog extends RealmObject {
}

package io.package.second;

@RealmClass(name="SecondDog")
public class Dog extends RealmObject {
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...