我想在另一个实体中嵌入某个实体类的列表 像:
@Entity
public class FirstEntity() {}
@Entity
public class SecondEntity() {
@Embedded
List<FirstEntity> firstEntities ;
}
谁能给我一个例子的解决方案。 谢谢
答案 0 :(得分:0)
您需要使用转换器。我通过GSON库将对象列表转换为JSON字符串(因此将依赖项添加到gradle文件中):
implementation 'com.google.code.gson:gson:2.8.2'
首先创建一个带有@TypeConverter
批注的Converter来转换您的List(这里是带有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)
}
}
然后,您需要在数据库类中声明Converter:
@Database(entities = [(YourParentClass::class)], version = 1)
@TypeConverters(OutputConverter::class)
abstract class YourDataBase : RoomDatabase() {
abstract fun yourDao(): YourDao
}
答案 1 :(得分:0)
您应该对问题使用联接,而不是增加数据冗余。如果您想学习转到https://www.guru99.com/sqlite-join.html#1。我认为这种方式会更好。