У меня есть 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
?