【发布时间】:2021-03-25 07:26:52
【问题描述】:
这里我需要在房间数据库中存储多个自定义实体在同一张表中。这件事在单个类型转换器中工作,但是当它出现在多个类型转换器的情况下,它会抛出错误。
import androidx.room.Entity
import androidx.room.PrimaryKey
import androidx.room.TypeConverter
import androidx.room.TypeConverters
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import java.lang.reflect.Type
@Entity(tableName = "tbl_finalOrder")
@TypeConverters(ItemEntityConverter::class)
data class FinalOrdersEntity (
@PrimaryKey(autoGenerate = true)
val id:Int,
val itemEntity: ItemEntity?,
// val itemEntity: String? = null,
var quantity: String?=null,
var unitName: String?=null,
var unitId: Int?=null,
var statusOfScheme: Boolean?=null,
@TypeConverters(SchemeDetailConverter::class)
var listOfScheme: List<SchemeDetailEntity>?=null,
val child_items: String?=null,
val selectedOffer:String? = null,
var offer:String?=null
)
class ItemEntityConverter {
@TypeConverter
fun stringToItemEntity(string: String?): ItemEntity = Gson().fromJson(string,ItemEntity::class.java)
@TypeConverter
fun itemEntityToString(list: ItemEntity?): String =Gson().toJson(list)
}
class SchemeDetailConverter {
@TypeConverter
fun stringToSchemeDetailEntity(json: String?): List<SchemeDetailEntity> {
val gson = Gson()
val type: Type = object : TypeToken<List<SchemeDetailEntity?>?>() {}.type
return gson.fromJson<List<SchemeDetailEntity>>(json, type)
}
@TypeConverter
fun schemeDetailEntityToString(list: List<SchemeDetailEntity?>?): String {
val gson = Gson()
val type: Type = object : TypeToken<List<SchemeDetailEntity?>?>() {}.type
return gson.toJson(list, type)
}
}
当我运行它时,它要求为 listOfScheme 创建类型转换器类。但是,已经有一个。
错误 FinalOrdersEntity.java:22:错误:无法弄清楚如何将此字段保存到数据库中。您可以考虑为其添加类型转换器。 私有 java.util.List
listOfScheme;
你能告诉我我在哪里缺少什么吗?提前谢谢你..
【问题讨论】:
标签: java android kotlin android-room android-database