asi*_*ood 6 android android-room
这是我的表:该id列是primary key。我想要Doorway id和id一个复合键。是否Room支持呢?如果可以,我该怎么做?
新的主键应该是复合的,应该是这样的:
primary key = id+doorway_id
Run Code Online (Sandbox Code Playgroud)
我的实体:
@Entity(tableName = "hours")
public class Hour extends EntityModel implements Parcelable {
@SerializedName("id")
@ColumnInfo(name = COLUMN_ID)
@PrimaryKey()
@Expose()
private int _id;
// Need to discuss.
@SerializedName("server_id")
@ColumnInfo(name = COLUMN_SERVER_ID)
private int serverId;
@SerializedName("entries")
@ColumnInfo(name = COLUMN_ENTRIES)
@Expose()
private float entries;
@SerializedName("alerts")
@ColumnInfo(name = COLUMN_ALERTS)
@Expose()
private float alerts;
@SerializedName("mag_level")
@ColumnInfo(name = COLUMN_MAG_LEVEL)
@Expose()
private float magLevel;
@SerializedName("door_open")
@ColumnInfo(name = COLUMN_DOOR_OPEN)
@Expose()
private float doorOpen;
@SerializedName("entryway_usage")
@ColumnInfo(name = COLUMN_ENTRYWAY_USAGE)
@Expose()
private float entrywayUsage;
@SerializedName("year")
@ColumnInfo(name = COLUMN_YEAR)
@Expose()
private int year;
@SerializedName("month")
@ColumnInfo(name = COLUMN_MONTH)
@Expose()
private int month;
@SerializedName("day")
@ColumnInfo(name = COLUMN_DAY)
@Expose()
private int day;
@SerializedName("hour")
@ColumnInfo(name = COLUMN_HOUR)
@Expose()
private int hour;
@SerializedName("alert_rate")
@Expose
@ColumnInfo(name = COLUMN_ALERT_RATE)
private double alert_rate;
@SerializedName("recorded_at")
@Expose
@ColumnInfo(name = COLUMN_TIME_STAMP)
private String recorded_at;
@SerializedName("doorway_id")
@ColumnInfo(name = COLUMN_DOORWAY_ID)
@Expose()
private int doorway_id;
}
Run Code Online (Sandbox Code Playgroud)
没有人回答,因此使用我的评论作为完成这项工作的答案。
找到了解决此问题的方法,只需删除旧表并使用新主键创建新表即可。这是如何
- 使用更改后的主键创建新的临时表
- 将旧数据复制到新临时表中
- 删除旧表
- 将新表的名称更改为旧表。
| 归档时间: |
|
| 查看次数: |
1193 次 |
| 最近记录: |