Android 使用Room在多个表中插入嵌套对象
我有一个类似于以下格式的Json:Android 使用Room在多个表中插入嵌套对象,android,database,sqlite,android-room,Android,Database,Sqlite,Android Room,我有一个类似于以下格式的Json: { "gender": "male", "name": { "first": "Axel", "last": "Raab" } } 我想创建两个表,比如Person和Name,并将这些数据存储在这两个表中。 我的实体类如下所示: @Entity data
{
"gender": "male",
"name": {
"first": "Axel",
"last": "Raab"
}
}
我想创建两个表,比如Person和Name,并将这些数据存储在这两个表中。
我的实体类如下所示:
@Entity
data class Person(
@PrimaryKey(autoGenerate = true)
var pid: Int,
@SerializedName("gender")
var gender: String?,
@SerializedName("name")
@Ignore
var name: Name?,
)
@Entity(indices = [Index("pId")],
foreignKeys = [ForeignKey(
entity = Person::class,
parentColumns = ["pid"],
childColumns = ["pId"],
onDelete = ForeignKey.CASCADE)])
data class Name(
@PrimaryKey(autoGenerate = true)
val mId: Int,
@SerializedName("first")
var first: String?,
@SerializedName("last")
var last: String?,
var pId: Int
)
我已经创建了相应的DAO,但无法确定如何编写一个事务,将此数据存储到两个表中,然后使用提供的ID进行关联。
我已经经历了许多使用@Embedded或@Relation或TypeConverter方法的解决方案,但要么它们不适合我的用例,要么解决方案是查询数据,而不是如何保存或插入
谢谢。您可以使用嵌入式
e、 g
在您的DAO中插入示例
@Insert
fun insert(item: Coordinates)
您可以在insert函数中传递坐标
实例变量
Address("your street", Coordinates(your_lat,your_lng))
谢谢你,穆罕默德。但如果我没记错的话,@Embedded被用来创建一个平面结构,它将填充地址表中的坐标列,这不是我目前的要求。我想要一个单独的地址表和坐标表,其中地址表主键是坐标表内的外键。希望这能进一步明确我的要求。
Address("your street", Coordinates(your_lat,your_lng))