简体   繁体   中英

Adding a POJO into a Room database table

I have a POJO class OfflineDataRequestInfo which I want to insert into a database table as part of OfflineData which is my entity. but I get an error

How can I fix this please

error: Cannot figure out how to save this field into database. You can consider adding a type converter for it. private final com.i6systems.offlineservicelibrary.offlineDatabase.OfflineDataRequestInfo requestInfoJsonX = null;

this is my code

data class OfflineDataRequestInfo (
    val status: String,
    val userId: String,
    val fuelOrderId: String,
    val timeStamp: String,
    val fuelOrder: String
)



 @Entity
data class OfflineData (
    @PrimaryKey(autoGenerate = true) val uid: Int = 0,
    @ColumnInfo(name = "request_info_json") val requestInfoJson: String?,
    @ColumnInfo(name="request_code") val requestCode: String?,
    @ColumnInfo(name="request_info_jsonX") val requestInfoJsonX: OfflineDataRequestInfo
)

This is not I insert

suspend fun insertOfflineData(requestInfoJson: String, requestCode: String, offlineDataRequestInfo: OfflineDataRequestInfo): Long {
        var result: Long = 0
        result = OfflineDatabaseManager.getInstance(app.applicationContext).insertOfflineData(
            OfflineData(
                0,
                requestInfoJson,
                requestCode,
                offlineDataRequestInfo
            ))
        return result
    }

offlineHelper.insertOfflineData(
                    inPositionApiData.toString(),
                    "notifyInPosition",
                OfflineDataRequestInfo(
                    "in-position",
                    action.userId,
                    id,
                    action.timestamp.toString(),
                    fuelOrderData.toString()
                ))

As i see you have 2 way to solve it :

  1. Write a TypeConverter for your object OfflineDataRequestInfo
  2. Add annotation @Embedded
@Embedded
@ColumnInfo(name="request_info_jsonX") 
val requestInfoJsonX: OfflineDataRequestInfo

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM