当前位置: 首页 > 知识库问答 >
问题:

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

姬欣怡
2023-03-14

救命啊!我只在一对多关系数据库中插入POJO时遇到问题。我有POJO和误解如何插入数据库中的所有列表???

@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
)

请帮帮我伙计们!

共有1个答案

楚志强
2023-03-14

您需要删除@ignore注释并使用类型转换器。

IMHO最好只保存pojo的ID,而不保存整个对象,例如。

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

当你需要这些公寓的时候,只要通过这些ID查询公寓就行了

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
    }
}
 类似资料:
  • 我在用户和角色之间有多对多的关系 用户实体: 角色实体: 用户角色实体: 服务等级: 样本输入: 1:首次储蓄-成功 示例输入2:向同一用户保存其他角色-失败 异常:(尝试在链接实体中的用户和角色中插入null) 在用户实体的映射或实用方法中是否缺少某些内容。非常感谢您的帮助。

  • 我试图坚持两个实体,它们有一对一和多对一的关系。 我正在尝试将表单集合嵌入到表单中。 我有一个多对一相关的实体,每次我创建一个新的课程简历,它与Candidat列相关candidat_id_id为空。 除了数据可数据中的Candidat id之外,只有实体Curendar umVitae被成功创建和持久化。 简历表 id|titre|candidat_id_id|id_education cand

  • 我的问题可能看起来很傻。我是JPA的新手,试图理解它的基本概念。我发现有一种@multi-to-one实体关系可以在那里使用。我的问题是,为什么有人想在拥有“一对多”关系的同时使用它?我的意思是,拥有后一个就足够了解关系并发送查询了,对吗?如果没有,请解释。也许我对这两种关系的看法是完全错误的。请提供一个场景作为示例,以便我更好地理解。谢谢

  • 问题内容: 我有一个类A {Set b .....},它把B类的引用保存为Set。这是一对多的关系。这两个类在oracle中都有音序器。我在所有的hibernate注释中都添加了层叠。当我保存A类时,它给了我无法插入null B.a_id的错误。A-id在我的数据库中不能为空。我该如何保持这种关系。 问题答案: 这是A-> B的单向关系。表B中的a_id列不可为空。当hibernate试图保存类B

  • 当我有用户并且他们有其他用户作为朋友时,我想让应用程序类似于facebook。因此,我创建了一个实体

  • 我有两张一对一的表: 用户: 用户数 我的实体: 使用者 用户账户 我试图坚持这一点,但我有错误: 当我尝试坚持我得到这个错误: 严重:Servlet。路径为[/ibank]的上下文中servlet[appServlet]的服务()引发了异常[Request processing failed;嵌套异常为javax.persistence.PersistenceException:org.hibe