java - 相同类型的嵌套关系

标签 java android sqlite kotlin android-room

根据the documentation关系只能引用 Pojo 类。如何定义同类型的嵌套依赖?

@Entity(tableName = "humans")
data class Human {

   @Relation
   val children:List<Human>

}

最佳答案

根据this中型博客文章,您可以使用类型转换器将列表转换为字符串,反之亦然。

class HumanTypeConverters {

    private var gson = Gson()

    @TypeConverter
    fun stringToHumanObjectList(data: String?): List<Human> {
        if (data == null) {
            return Collections.emptyList()
        }
        return gson.fromJson(data, object : TypeToken<List<Human>>() {}.type)
    }

    @TypeConverter
    fun humanObjectListToString(humanObjects: List<Human>): String = gson.toJson(humanObjects)
}

并添加此注释,如下所示

@Database(entities = [Human::class], version = 1)
@TypeConverters(HumanTypeConverters::class)
abstract class HumanDatabase : RoomDatabase() {
    ...
}

关于java - 相同类型的嵌套关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51139803/

相关文章:

sql - SQLite 中的计数器变量

java - 使用 maven surefire 插件运行多个测试类

java - 我如何对 spring security @PreAuthorize 自定义表达式进行单元测试

android - 以编程方式将 WhatsApp 发送到没有选择器的联系人列表

android - 在对话框 fragment 中方向改变目标 fragment 改变后

java - 与 executorService 同步

java - 在 REST 服务中实现方法 OPTIONS 的最佳方式

java - 反转 long 的字节顺序

android - 将 Google Mobile Vision 库依赖项添加到 gradle

c# - SQLite 和 Int64 到 C# 中的 Int32