Ошибка при вставке: ограничение NOT NULL не выполнено: (код 1299) в базе данных комнаты - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь вставить значения в мою таблицу, но каждый раз выдает следующую ошибку: android .database.sqlite.SQLiteConstraintException: сбой ограничения NOT NULL: UserModel.Id (код 1299), Очень странно, что тот же код работает в отладочной сборке , но когда он подписан apk , он выдает мне такую ​​ошибку.

Моя пользовательская модель выглядит следующим образом:

@Entity
public class UserModel {
@PrimaryKey
@NonNull
String Id;
String Fname,Sname;

@NonNull
public String getId() {
    return Id;
}

public void setId(@NonNull String id) {
    Id = id;
}

public String getFname() {
    return Fname;
}

public void setFname(String fname) {
    Fname= fname;
}

public String getSname() {
    return Sname;
}

public void setSname(String sname) {
    Sname= sname;
}
}

При вставке данных в таблицу я использовал Gson, где он выглядит так:

     JSONArray payloadArray = new JSONArray(response);
     Type type = new TypeToken<List<UserModel>>() {}.getType();
     List<UserModel> userList = new Gson().fromJson(payloadArray.toString(), type);
     database.userDao().insertData(userList);

В моей сборке вариант Я установил следующее:

   storeFile file('E:\\KeystoreFile\\Sample.jks')
   ------------------------------------------------------------------
   debug {
        minifyEnabled false
        debuggable true
        initWith debug
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        buildConfigField "String", "SERVER_URL", project.properties["server.url"]
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

        signingConfig signingConfigs.config
        manifestPlaceholders = [
                appIcon: "@mipmap/ic_launcher"
        ]

        applicationIdSuffix ".qa"

    }

и моя версия комнаты - 2.0.0. Я устал от последней версии 2.2.3 и других версий, но, похоже, ничего не делает. Кроме того, я перешел на Androidx, не уверен, что вызывает эту ошибку, любая помощь будет отличной

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Для получения дополнительной информации вы можете проверить следующую ссылку Правила ProGuard

И для моей проблемы я установил правило proGuard как:

-keep class  app.mypackage.model.** { *; }
0 голосов
/ 06 января 2020

при создании знака apk ваша переменная класса UserModel изменилась. и его создать проблему при вставке. Добавьте ниже код для правил Proguard

-keep class * extends androidx.room.RoomDatabase
-dontwarn androidx.room.paging.**
-keepattributes Signature, InnerClasses, EnclosingMethod
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
...