Я обновляю какое-то старое приложение, которое использовало SQLiteOpenHelper, и вместо этого я использую Room.У меня нулевой фон с Android / sqLite / Room и много SpringData / JPA.
Изначально я получал
Room cannot verify the data integrity. Looks like you’ve changed schema but forgot to update the version number. You can simply fix this by increasing the version number.
Поскольку я впервые использовал Room и я отобразил только половину столбцов (те, которые мне были нужны), я совершенно неполучить, почему он сказал "изменили схему".В Hibernate можно отображать только необходимые столбцы, и я подумал, что то же самое применимо и здесь.Поэтому я добавил все столбцы и ошибка сохранилась.Затем я изменил свою версию на 2 и добавил пустой метод миграции:
@Database(entities = {VisitorProvider.class}, version = 2, exportSchema = false)
public abstract class VisitorProviderDatabase extends RoomDatabase {
public abstract VisitorProviderRepo visitorProviderRepo();
public static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(SupportSQLiteDatabase database) {
// Since I didn't alter the table, there's nothing else to do here.
}
};
}
И затем я получил эту ошибку:
Migration didn't properly handle visitante(br.com.acessoportaria.models.english.VisitorProvider)
//comparison between expected and found here
Я вставил сравнениена только один инструмент сравнения и получил это:
Игнорирование всех хороших практик по отображению Java-сущности в таблицу, просто учитывая эту проблему, что ядолжен измениться, чтобы избавиться от этой ошибки?Как правильно сопоставить текстовое поле между sqLite и Java?indices
массив может быть пустым вместо пустого?
Вот моя сущность:
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Entity(tableName = "visitante")
public class VisitorProvider {
@PrimaryKey
private Integer _id;
@NonNull
private String rg;
@NonNull
private String rgFuncResp;
private String rgFuncRespAlteracao;
@ColumnInfo(name = "nome")
private String name;
@ColumnInfo(name = "sobrenome")
private String lastName;
@NonNull
@ColumnInfo(name = "origem")
private String origin;
}