android - 如何在房间数据库中保存外键
问题描述
我有以下要存储在房间数据库中的模型类:
我不太了解,但我认为我需要在这里使用外键。虽然我没有太多的想法,它只是一个猜测。
如果你能给出详细的解释,
public class EarthquakeData {
public List < Feature > features;
public class Feature {
public String type;
public Properties properties;
// public Geometry geometry;
public String id;
public class Properties {
public double mag;
public String place;
public Object time;
public Object updated;
public Object tz;
public String url;
public String detail;
public int felt;
public double cdi;
public double mmi;
public String alert;
public String status;
public int tsunami;
public int sig;
public String net;
public String code;
public String ids;
public String sources;
public String types;
public int nst;
public double dmin;
public double rms;
public double gap;
public String magType;
public String type;
public String title;
}
}
}
我在 Room 数据库中只保存了一个简单的类,如下面的类:
@Entity(tableName = "notes")
public class Note {
@PrimaryKey
@NonNull
private String id;
@NonNull
@ColumnInfo(name = "note")
private String mNote;
public Note(@NonNull String id, @NonNull String mNote) {
this.id = id;
this.mNote = mNote;
}
@NonNull
public String getId() {
return id;
}
@NonNull
public String getNote() {
return this.mNote;
}
}
但我不知道将第一种模型类保存在 Room 中,这对我来说非常复杂,因为它由类中的对象组成。
解决方案
据我了解,您有以下关系:
1 EarthquakeData - Many Features
and
1 Feature - 1 Properties
所以你可以这样建模:
Table Features(id: PrimaryKey, earthquake_data_id: ForeignKey, ...)
和
Table Feature(id: PrimaryKey, properties_id: ForeignKey, ...)
使用 Roomentities
的功能如下所示:
@Entity(
tableName = "features",
foreignKeys = [
ForeignKey(
entity = EarthquakeDataEntity::class,
parentColumns = ["id"],
childColumns = ["earthquake_data_id"],
onDelete = ForeignKey.CASCADE, // See documentation for other operations
onUpdate = ForeignKey.CASCADE
)
]
class Features {
...
}
参数查看ForeignKey官方文档
推荐阅读
- vue.js - 为什么 v-model 不重置复选框?
- sql - PySpark 中是否有相当于 SnowFlake 的“REGEXP_SUBSTR”?
- flutter - Flutter Futurebuilder 在显示快照数据值时显示错误
- azure-devops - DevOps URL 默认项目集合
- python - 输出接受我给出的值并运行没有任何错误,但打印语句没有被执行
- apache-spark - SparkContext 与 spark udf 冲突
- symfony - 在 Symfony 中即时更改 SameSite cookie
- powershell - 将每个项目从 for 循环添加到 csv 文件
- ios - 构建时 Xamarin iOS 链接失败问题
- powershell - Powershell - 自动将密码添加到复制项代码中