Комната OnConflict заменить стратегию для столбца, если не ноль - PullRequest
0 голосов
/ 02 октября 2019

У меня есть Entity MySurvey, а MySurvey имеет столбец с именем answers, как показано ниже:

Мой опрос

@Entity(tableName = "my_survey")
data class MySurvey(@PrimaryKey var _id: String = "",
                    var created_at: String = "",
                    var conducted_at: String? = "",
                    var cancellation_reason: String?,
                    var enumeratorId: String = AppPreferences.getString(Enumerator_Id, "default"),
                    @Embedded(prefix = "basic_") var survey: SurveyBasic,
                    @Embedded(prefix = "location_") var location: SurveyLocationBasic?,
                    var ended_at: String? = "",
                    var status: MySurveyStatus = MySurveyStatus.OFFLINE,
                    @Embedded var stats: Stats?,
                    var uploaded: Boolean,
                    var answers: List<AnswersResponse>? = listOf()
)

MySurveyDAO

@Dao
interface MySurveyDAO {

    @Insert(onConflict = REPLACE)
    fun insert(mySurvey: MySurvey): Long

    @Insert(onConflict = REPLACE)
    fun insert(savedSurvey: List<MySurvey>)
}

Имеется экран списка, который извлекает массив MySurvey s из API, который не имеет answers. Когда подробный экран, который выбирает конкретный MySurvey на основе ID и имеет answers объект. Я обновил в базе данных стратегию onConflict = REPLACE. Это работало замечательно, но когда я возобновляю работу со списком, база данных имеет столбец answers как NULL для всех записей, это связано со стратегией REPLACE.

Есть ли способ добавить условие, что REPLACE только столбец IF IT IS NOT NULL?

...