Не выполнено ограничение Null в базе данных Room - PullRequest
0 голосов
/ 27 января 2020

Я получил данные с сервера, и эти данные я пытаюсь вставить в локальное хранилище комнаты. Несколько полей не заполнены, и я не могу их добавить.

Ниже приведен мой класс данных. ниже

const val CURRENT_USER_ID = 0

@Entity
data class UserModel(val first_name: String,
                      val last_name: String,
                      val personal_image: String,
                      val status:String,
                      val message:String,
                      val token:String,
                      val user_type:String,
                      val user_id:Int,
                      val name:String,
                      val phone:String,
                      val email:String,
                      val photo:String,
                      val designation:String,
                      val interests:String,
                      val company_name:String,
                      val description:String,
                      val service_type:String,
                      val grade:String,
                      val origin:String,
                      val ownership:String,
                      val certifications:String,
                      val no_of_employees:String,
                      val production:String,
                      val address:String,
                      val city:String,
                      val state:String,
                      val country:String,
                      val zip:String,
                      val website:String
) {
    @PrimaryKey(autoGenerate = false)
     var UId:Int=
        CURRENT_USER_ID

}

Пожалуйста, дайте мне знать, как я могу решить эту ошибку. Если какое-либо из полей является пустым, я хочу ввести пустую строку

Ответы [ 2 ]

1 голос
/ 27 января 2020

Существует два способа решения этой проблемы:

1.using @ignore annotation

Вы можете использовать @ignore annotation, чтобы показать Room, какие поля могут быть нулевыми.

 public ImageData(int id, String name, String title, String description, int locationId) {
        this.id = id;
        this.name = name;
        this.title = title;
        this.description = description;
        this.locationId = locationId;
    }

    @Ignore
    public ImageData(int id, String name, String title, String description) {
        this.id = id;
        this.name = name;
        this.title = title;
        this.description = description;
    }

Дополнительная помощь в { ссылка }

2.использование значения по умолчанию

Намного проще! Просто используйте значение по умолчанию, например:

@ColumnInfo(name = "user_name", defaultValue = "temp") val name: String
0 голосов
/ 27 января 2020

Если какое-либо из полей является пустым, я хочу ввести пустую строку

Вы можете назначить значения по умолчанию для ваших переменных с помощью:

val last_name: String = "",

это будет принять значение по умолчанию для пустой строки, если любой из ответов будет нулевым.

В качестве альтернативы, вы можете просто пометить некоторые из ваших полей как обнуляемые:

val last_name: String?

, которые затем будут хранить эти как ноль, если они не получают значений

...