gpt4 book ai didi

android - 在 Android Room 中插入实体一对多关系

转载 作者:行者123 更新时间:2023-12-02 16:12:17 27 4
gpt4 key购买 nike

请帮忙!我只在与一对多关系的数据库中插入 pojo 时遇到问题。我有 pojos 并误解了如何将所有列表插入数据库???

@Entity
data class Street(
@PrimaryKey(autoGenerate = true)
var id: Int = 0
) {
@Ignore
var houses: List<House>? = listOf()
}

@Entity
data class House(
@PrimaryKey(autoGenerate = true)
var id: Int = 0,
var streetId: Int
) {
@Ignore
var flats: List<Flat>? = listOf()
}

@Entity
data class Flat(
@PrimaryKey(autoGenerate = true)
var id: Int = 0,
var houseId: Int
)

请大家帮帮我!

最佳答案

您需要删除@Ignore注释并使用type converters .

恕我直言,最好只保存 pojo 的 id,而不是整个对象例如

@Entity
data class House(
@PrimaryKey(autoGenerate = true)
var id: Int = 0,
var streetId: Int,
var flatIds: List<Int>? = listOf()
)

当您需要所有这些公寓时,只需通过这些 id 查询 FlatDao

<小时/>

如果您仍然想保存整个对象,您可以将其转换为 Gson,然后再转换回来

class YourObjectConverter {

@TypeConverter
fun listToJson(value: List<YourObject>?): String {

return Gson().toJson(value)
}

@TypeConverter
fun jsonToList(value: String): List<YourObject>? {

val objects = Gson().fromJson(value, List<YourObject>::class.java) as Array<YourObject>
val list = objects.toList()
return list
}
}

关于android - 在 Android Room 中插入实体一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60187446/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com