java - 如何在android room中嵌入实体列表?

标签 java android persistence android-room

我想在另一个实体中嵌入某个实体类的列表 喜欢:

@Entity
public class FirstEntity() {}

@Entity
public class SecondEntity() {

@Embedded
List<FirstEntity> firstEntities ;

}

任何人都可以给我一个带有示例的解决方案吗? 谢谢

最佳答案

您需要使用转换器。我通过 GSON 库将对象列表转换为 JSON 字符串(因此在您的 gradle 文件中添加依赖项):

implementation 'com.google.code.gson:gson:2.8.2'

首先使用 @TypeConverter 注释创建一个转换器来转换您的列表(这里是我的示例,其中包含一个名为 Output 的类):

class OutputConverter {

    @TypeConverter
    fun fromOutputList(outputs: List<Output>?): String? {
        if (outputs == null) {
            return null
        }
        val gson = Gson()
        val type = object : TypeToken<List<Output>>() {}.type
        return gson.toJson(outputs, type)
    }

    @TypeConverter
    fun toOutputList(outputString: String?): List<Output>? {
        if (outputString == null) {
            return null
        }
        val gson = Gson()
        val type = object : TypeToken<List<Output>>() {}.type
        return gson.fromJson(outputString, type)
    }
}

然后您需要在数据库类中声明转换器:

@Database(entities = [(YourParentClass::class)], version = 1)
@TypeConverters(OutputConverter::class)
abstract class YourDataBase : RoomDatabase() {
    abstract fun yourDao(): YourDao
}

关于java - 如何在android room中嵌入实体列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52166583/

相关文章:

java - 编写打印素数数组的方法时遇到麻烦

java - 如何创建一个全局 FileInputStream 对象,该对象可以从我的项目中的其他类访问?

java - GWT:更改树行的填充?

Hibernate SequenceStyleGenerator Preferred_sequence_per_entity

hibernate - OSGi + hibernate

java - 当记录器应该停止时应用程序崩溃

android - 多日期选择器问题

android - 从 firebase 读取数据,并填充到 ListView 中

android - 将 ImageView 更改为黑白

java - JDO Google App Engine 验证用户