OnConflictStrategy.IGNORE не работает КОМНАТАAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 OnConflictStrategy.IGNORE не работает КОМНАТА

Сообщение Anonymous »

У меня проблема: когда я вставляю новый элемент в таблицу, возникает исключение: android.database.sqlite.SQLiteConstraintException: ограничение UNIQUE не выполнено: DayCalorieData.date (код 1555 SQLITE_CONSTRAINT_PRIMARYKEY) , но я не понимаю почему. Потому что я установил OnConflictStrategy.IGNORE. Вот код для моей базы данных:
Entity:

Код: Выделить всё

@Entity(
tableName = "dayNutrientAmount",
primaryKeys = ["date", "nutrientId"],
indices = [Index(value = ["date", "nutrientId"], unique = true)]
)
data class DayNutrientAmount(
val date: String,
val nutrientId: Int,
val receivedAmount: Int = 0,
)
Дао:

Код: Выделить всё

@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insertNewDayNutrient(dayNutrientAmount: DayNutrientAmount)
ViewModel:

Код: Выделить всё

fun insertNewDayNutrientAmount(nutrientId: Int, date: String) {
viewModelScope.launch(Dispatchers.IO) {
mainScreensRepositoryImpl.insertDayNutrientAmount(DayNutrientAmount(
date, nutrientId
))
}
}
Пользовательский интерфейс:

Код: Выделить всё

val nutrients = homeScreenVM
.getAllNutrients()
.collectAsState(initial = emptyList())
.value
LaunchedEffect(key1 = nutrients, key2 = selectedDate) {
nutrients.forEach { nutrient ->
homeScreenVM.insertNewDayNutrientAmount(nutrient.nutrientId, selectedDate)
}
}
Я не думаю, что код viewModel и код пользовательского интерфейса необходимы для понимания. Но я оставил это на всякий случай.
Мне нужна уникальная комбинация даты и идентификатора питательного вещества, и они не обязательно должны быть первичными ключами. Я попытался добавить простой ключ для каждой строки (просто целочисленный идентификатор) вместо того, чтобы создавать первичные ключи питательного идентификатора и даты. Но результат был тот же. Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/785 ... -work-room
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Можно ли использовать std::ignore, чтобы отбросить возвращаемое значение функции и избежать любых связанных с этим преду
    Anonymous » » в форуме C++
    0 Ответы
    60 Просмотры
    Последнее сообщение Anonymous
  • Можно ли использовать std::ignore, чтобы отбросить возвращаемое значение функции и избежать любых связанных с этим преду
    Гость » » в форуме C++
    0 Ответы
    58 Просмотры
    Последнее сообщение Гость
  • Pipenv install --ignore-pipfile не имеет смысла
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Как работает istream::ignore(std::numeric_limits::max(), '\n' )?
    Anonymous » » в форуме C++
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Python shutil.copytree - ignore permissions
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»