Различные преобразователи типов для разных сущностей настраиваемых объектов в базе данных комнат

Здесь мне нужно сохранить несколько настраиваемых объектов в одной таблице в базе данных комнаты. Эти вещи работают в одном преобразователе типов, но когда это происходит в случае нескольких преобразователей типов, возникает ошибка.

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)
    }
}


Когда я запускаю это, он просит создать класс typeconverter для listOfScheme. Однако для него уже есть класс.

ошибка FinalOrdersEntity.java:22: ошибка: не могу понять, как сохранить это поле в базе данных. Вы можете рассмотреть возможность добавления для него преобразователя типов. частный java.util.List ‹com.myproject.database.entities.SchemeDetailEntity› listOfScheme;

Вы можете сказать мне, где и что мне здесь не хватает. Заранее спасибо..


person Lazy Mind    schedule 25.03.2021    source источник


Ответы (1)



data class FinalOrdersEntity (
    @PrimaryKey(autoGenerate = true)
    val id:Int,
@TypeConverters(ItemEntityConverter::class)
     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
)

вы можете указать класс преобразователя типов для конкретного поля, надеясь, что это устранит ошибку

person Rohini    schedule 30.03.2021