处理Room中的嵌套对象的最便捷方法是什么?

时间:2018-08-12 15:26:56

标签: android-room

我想将服务器的响应保存在数据库中(父类)。 json具有嵌套对象,该对象也应保存在新表(嵌套类)中的数据库中。问题是我不知道如何编写类Parent和ParentDao以使其使用NestedDao

@Entity
data class Parent(
    @PrimaryKey(autoGenerate = true)
    var id: Long? = null,

    @SerializedName(«nested»)
    val homeTeam: Nested,
    //other fields
 )

@Entity
data class Nested(
     @PrimaryKey(autoGenerate = true)
     var nestedId: Long? = null,

     @SerializedName("name")
     val name: String,
     //other fields
  )

@Dao
interface ParentDao {
    @Query("SELECT * FROM parent»)
    fun getData(): Single<List<Parent>>

   @Insert
    fun insert(matches: List<Parent>)
}

这给我一个错误:无法弄清楚如何将该字段保存到数据库中。您可以考虑为其添加类型转换器

那么,我该如何立即保存和查询带有嵌套的父项?

1 个答案:

答案 0 :(得分:0)

我不知道您是否成功,但这是我的答案,希望对您有所帮助。 这就是我在项目中使用的内容,在Android docs

中建议在Room中使用
@Entity
data class Parent(
    @PrimaryKey(autoGenerate = true)
    var id: Long? = null,

    @Embedded @ColumnInfo(name= "nested")
    val homeTeam: Nested,
    //other fields
 )

data class Nested(
     @PrimaryKey(autoGenerate = true)
     var nestedId: Long? = null,

     @ColumnInfo(name= "name")
     val name: String,
     //other fields
  )

@Dao
interface ParentDao {
    @Query("SELECT * FROM parent»)
    fun getData(): Single<List<Parent>>

   @Insert
    fun insert(matches: List<Parent>)
}