Sugar ORM перезаписывает ID из корма

Я пишу приложение для Android, которое использует Sugar ORM для сохранения данных. У меня есть случай, когда я получаю objectID от веб-сервера, и этот идентификатор должен быть таким же, как идентификатор моей записи в локальной базе данных. Таким образом, Моя запись данных будет обновлена правильно при сохранении позже.

Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я расширяю SugarRecord class Sqlite перезаписывает идентификатор, который я устанавливаю в объекте. Например, идентификатор в моем канале равен 2, но при вставке в базу данных идентификатор изменяется на 1.

Есть ли какие-либо способы предотвратить автоматическое приращение, которое база данных делает с Sugar ORM?

Спасибо!

2 ответа

  1. В sugar ORM свойство primary key with autoincrement по умолчанию установлено в столбце id.Попробуйте обновить версию схемы, введя более высокое число в файле манифеста, а также переименовать переменную (ID variable in POJO class)

  2. У меня была та же проблема, которую я решил, перезаписав ID setter в моем классе модели, как это :

    public class MyClass extends SugarRecord {
    
        @Unique
        private Long id;
    
        // default constructor for SugarRecord
        public MyClass() {
    
        }
    
        @Override
        public Long getId() {
            return this.id;
        }
    
        @Override
        public void setId(Long id) {
            // Use "super" to overwrite
            super.setId(id);
            this.id = id;
        }
    }