Olá gente, boa tarde!
Estou tendo o um problema ao realizar a migration, está dando erro de compilação quando eu rodo o app no meu celular dizendo que nao conseguiu achar a chave estrageira na tabela telefone, sendo que eu criei, se poderem me ajudar, por favor!
O erro é esse:
O código da migration é:
new Migration(5, 6) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("CREATE TABLE IF NOT EXISTS " + newStudentDatabaseName + " (`identifier` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT, `email` TEXT, `createDate` INTEGER)");
database.execSQL("INSERT INTO " + newStudentDatabaseName + " (identifier, name, email) SELECT identifier, name, email FROM " + studentDatabaseName);
database.execSQL("CREATE TABLE IF NOT EXISTS " + telephoneDatabaseName + " (`identifier` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `number` TEXT, `telephoneType` TEXT, `studentIdentifier` INTEGER NOT NULL)");
database.execSQL("INSERT INTO " + telephoneDatabaseName + " (number, studentIdentifier) SELECT telephone, identifier FROM " + studentDatabaseName);
database.execSQL("UPDATE " + telephoneDatabaseName + " SET telephoneType = ?", new TelephoneType[]{TelephoneType.LANDLINE});
removeAndRename(database);
}
}
O código do model Telephone:
@Entity
public class Telephone implements Parcelable {
@PrimaryKey(autoGenerate = true)
private int identifier;
private String number;
private TelephoneType telephoneType;
@ForeignKey(
entity = Student.class,
parentColumns = "identifier",
childColumns = "studentIdentifier",
onUpdate = CASCADE,
onDelete = CASCADE
)
@ColumnInfo(index = true)
private int studentIdentifier;
...
O meu dispositivo é um com o android 12 e a versão do Room é a mesma da aula!