gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:16 25 4
gpt4 key购买 nike

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

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

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