#android #android-room-relation
Вопрос:
@Entity(tableName = "DailyGraphData", indices = [Index(value = arrayOf("lastTimeUsed","beginningTime"), unique = true)]) data class DailyGraphData( @PrimaryKey(autoGenerate = true) val id: Int = 0, var appName: String, var packageName: String, var totalAppTimeInForeground: Long? = 0L, var lastTimeUsed: String? = "", var beginningTime: String? ="", var endTime: String? = "", var isChild: Boolean )
Это мой класс сущностей, в котором время начала и последнего использования я сохранял уникальность, но когда я пытаюсь запустить приложение, то в первый раз у меня 8 данных, которые поступают и хранятся в таблице, как показано ниже на экране
теперь я пытаюсь снова вставить данные со значением 10, в которых 8 совпадают с предыдущими 2 новыми значениями, но на этот раз isChild будет 1 теперь, когда он попытается вставить, я не знаю, почему он обновляет предыдущее значение, см. На экране ниже.
вы можете увидеть на этом экране все предыдущие обновления значений ischild true, а также еще две записи значений
что я хочу, чтобы, если запись 8 уже вставлена в !ischild и последний раз использовалась, и время начала совпадает, когда я пытаюсь вставить другую, тогда она должна вставить просто вставьте новую, использованную в последний раз, и время начала, пожалуйста, помогите мне, что я делаю неправильно
Комментарии:
1. Похоже, они не обновляются, вы очищаете таблицу перед вставкой новых значений.
Ответ №1:
Это решение, которое я должен был игнорировать, если ограничение верно .
Я дал это :
@Insert(onConflict = OnConflictStrategy.REPLACE)
после обновления
@Insert(onConflict = OnConflictStrategy.IGNORE)
он не вставляет новые данные, если время начала и время окончания уже есть в таблице базы данных