【发布时间】:2020-01-06 13:05:15
【问题描述】:
我正在尝试将值插入到我的表中,但每次它给我以下错误,android.database.sqlite.SQLiteConstraintException: NOT NULL constraint failed: UserModel.Id (code 1299)。很奇怪,相同的代码在 debug build 中工作,但是当它是 signed 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 不确定是什么导致了这个错误,任何帮助都会很棒
谢谢
【问题讨论】:
-
您没有在对象中设置 Id 的值。检查您正在使用的 JSON。
-
我的 Json 和我的 Model 的字段相同
-
检查该 JSON 中 Id 的值。
-
只有在签署 apk 时才会收到此错误。在调试版本中它工作正常。
-
Id 的值是随机字符串,我已经很好地检查了响应。我看不到任何空值
标签: android sqlite android-room androidx