Изтриване на първичния ключ в моделния клас на Android Realm

Имам клас модел с име Post package com.example.sudeepbajracharya.assignment.entity;

import com.google.gson.annotations.SerializedName;

import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;


public class Post extends RealmObject {
@SerializedName("userId")
private int userId;
@SerializedName("id")
private int id;
@SerializedName("title")
private String title;
@SerializedName("body")
private String body;


public void setUserId(int userId) {
    this.userId = userId;
}

public void setId(int id) {
    this.id = id;
}

public void setTitle(String title) {
    this.title = title;
}

public void setBody(String body) {
    this.body = body;
}



public int getUserId() {

    return userId;
}

public int getId() {
    return id;
}

public String getTitle() {
    return title;
}

public String getBody() {
    return body;
}
}

преди това използвах @primaryKey в id. Но сега не искам да използвам този първичен ключ, така че искам да го премахна отново. Изтрих ключовата дума @primarykey, както можете да видите по-горе, но когато се опитам да стартирам приложението си, тя казва.... „Post“ има първичен ключ, вместо това използвайте „createObject(Class, Object)“. Може ли някой да ми каже как мога да разреша този проблем? Как мога да завърша премахването на първичния ключ от класа на моя модел?


person Sudeep    schedule 09.05.2018    source източник


Отговори (2)


Деинсталирайте приложението си и го стартирайте или мигрирайте базата данни към нова версия. Но не е добра практика да поддържате модел/клас на обект без PrimaryKey

person Sujin Shrestha    schedule 09.05.2018

Трябва да добавите миграция за вашите Realm модели.

Това трябва да се прави всеки път, когато добавяте/премахвате поле или добавяте/премахвате анотации на Realm към поле (като @PrimaryKey или @Required или други)

По този начин запазвате всичките си данни, но просто променяте всички вече запазени данни

https://realm.io/docs/java/latest/#migrations

person Moonbloom    schedule 09.05.2018