我想在另一个实体中嵌入某个实体类的列表 喜欢:
@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/