Fixed
Status Update
Comments
yb...@google.com <yb...@google.com> #2
Can you provide the StaffScheduleAssignment
(and anything else referred from it, like its embedded field classes) so that we can reproduce this?
ba...@lamelcolor.ch <ba...@lamelcolor.ch> #3
Yes, no problem.
@Entity(foreignKeys = {
@ForeignKey( onDelete = ForeignKey.CASCADE ,entity = StaffSchedule.class, parentColumns = "pkScheduleNo", childColumns = "fkScheduleNo")
}, indices = {@Index("fkScheduleNo"), @Index("fkStaffNo")})
public class StaffScheduleAssignment implements Serializable {
@SerializedName("pkAssignmentNo")
@Expose
@PrimaryKey(autoGenerate = true)
private int pkAssignmentNo;
@SerializedName("fkScheduleNo")
@Expose
private int fkScheduleNo;
@SerializedName("staffSchedule")
@Expose
@Embedded
private StaffSchedule staffSchedule;
@SerializedName("fkStaffNo")
@Expose
private String fkStaffNo;
@SerializedName("staffScheduleStates")
@Expose
@Ignore
private List<StaffScheduleState> staffScheduleStates;
@SerializedName("master")
@Expose
private boolean master;
// GETTER SETTER HERE
@Override
public String toString() {
return "StaffScheduleAssignment{" +
"pkAssignmentNo=" + pkAssignmentNo +
", fkScheduleNo=" + fkScheduleNo +
", staffSchedule=" + staffSchedule +
", fkStaffNo='" + fkStaffNo + '\'' +
", staffScheduleStates=" + staffScheduleStates +
", master=" + master +
'}';
}
}
@Entity
public class StaffSchedule implements Serializable {
@SerializedName("pkScheduleNo")
@Expose
@PrimaryKey(autoGenerate = true)
private int pkScheduleNo;
@SerializedName("startDate")
@Expose
private long startDate;
@SerializedName("endDate")
@Expose
private long endDate;
@SerializedName("comment")
@Expose
private String comment;
@SerializedName("fkReportNo")
@Expose
private Integer fkReportNo;
@SerializedName("staffScheduleTask")
@Expose
@Ignore
private List<StaffScheduleTask> staffScheduleTask;
@SerializedName("staffScheduleRemarks")
@Expose
@Ignore
private List<StaffScheduleRemark> staffScheduleRemarks;
@SerializedName("staffScheduleProducts")
@Expose
@Ignore
private List<StaffScheduleProduct> staffScheduleProducts;
@SerializedName("staffExternal")
@Expose
@Ignore
private List<StaffExternal> staffExternal;
@SerializedName("staffInternal")
@Expose
@Ignore
private List<StaffInternal> staffInternal;
@SerializedName("followupAction")
@Expose
@Embedded
private FollowupAction followupAction;
@SerializedName("fkFollowupActionNo")
@Expose
private Integer fkFollowupActionNo;
@SerializedName("followupActionRemark")
@Expose
private String followupActionRemark;
@SerializedName("workExplanation")
@Expose
private String workExplanation;
// GETTER SETTER HERE
@Entity
public class FollowupAction implements Serializable {
@SerializedName("pkFollowupActionNo")
@Expose
@PrimaryKey
private int pkFollowupActionNo;
@SerializedName("fkStateTypeNo")
@Expose
private int fkStateTypeNo;
@SerializedName("followupAction")
@Expose
private String followupAction;
@SerializedName("validationText")
@Expose
private String validationText;
// GETTER SETTER HERE
}
Other class is ignored.
el...@google.com <el...@google.com> #4
Hi there - a follow up question, which is the column you have added between the versions? Is it `workExplanation`?
ba...@lamelcolor.ch <ba...@lamelcolor.ch> #5
Hello, yes that's it.
ev...@gmail.com <ev...@gmail.com> #6
What was embedded in my email?
ba...@lamelcolor.ch <ba...@lamelcolor.ch> #7
Sorry I don't understand your request ! What do you means about that ?
el...@google.com <el...@google.com> #8
Hi - I believe comment #6 was a spam post, you can ignore it!
el...@google.com <el...@google.com> #9
Sorry - one more follow up question - could you clarify what you mean by "This error not occur because I have no change my db version."? I'm working on reproducing the error and want to have the full backstory.
ba...@lamelcolor.ch <ba...@lamelcolor.ch> #10
It is to say it's not a error by oversight.
el...@google.com <el...@google.com> #11
Could you share the AutoMigration implementation that is getting generated? It should be located somewhere in the /build/generated/ap_generated_sources/ directory.
ap...@google.com <ap...@google.com> #12
Project: platform/frameworks/support
Branch: androidx-main
commit 87c1e43b72f3eaa6342fe7afe9136e4994b8d055
Author: Elif Bilgin <elifbilgin@google.com>
Date: Mon Jul 19 10:05:33 2021
Resolving Auto-Migration error when a new column is added to an embedded Entity between versions.
This fix is particularly for the issue when the nullability of a column that is in an embedded entity is misinterpreted, generating an auto migration with missing default values.
Bug: 193798291
Test: AutoMigrationTest.java
Change-Id: I5fcb1bcf6bf0af9763ed90aea6ec4f25581ca63d
A room/integration-tests/testapp/schemas/androidx.room.integration.testapp.migration.EmbeddedAutoMigrationDb/2.json
A room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/migration/EmbeddedAutoMigrationDb.java
M room/room-compiler/src/main/kotlin/androidx/room/writer/AutoMigrationWriter.kt
A room/integration-tests/testapp/schemas/androidx.room.integration.testapp.migration.EmbeddedAutoMigrationDb/1.json
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/migration/AutoMigrationTest.java
https://android-review.googlesource.com/1771292
Branch: androidx-main
commit 87c1e43b72f3eaa6342fe7afe9136e4994b8d055
Author: Elif Bilgin <elifbilgin@google.com>
Date: Mon Jul 19 10:05:33 2021
Resolving Auto-Migration error when a new column is added to an embedded Entity between versions.
This fix is particularly for the issue when the nullability of a column that is in an embedded entity is misinterpreted, generating an auto migration with missing default values.
Bug: 193798291
Test: AutoMigrationTest.java
Change-Id: I5fcb1bcf6bf0af9763ed90aea6ec4f25581ca63d
A room/integration-tests/testapp/schemas/androidx.room.integration.testapp.migration.EmbeddedAutoMigrationDb/2.json
A room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/migration/EmbeddedAutoMigrationDb.java
M room/room-compiler/src/main/kotlin/androidx/room/writer/AutoMigrationWriter.kt
A room/integration-tests/testapp/schemas/androidx.room.integration.testapp.migration.EmbeddedAutoMigrationDb/1.json
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/migration/AutoMigrationTest.java
Description
Component used: Room auto migration Version used: 2.4.0-alpha02 Devices/Android versions reproduced on: Samsung xcover 4s / android 10
This problem occur when I have add a new column in a entity. Auto migration add this columns for the entity, but it is not pass to the entity where the object entity is embedded.
For make this error try to make auto migration when you add a new columns to a embedded entity.
This error not occur because I have no change my db version.