首页 > 解决方案 > 将 POJO 添加到 Room 数据库表中

问题描述

我有一个 POJO 类,我想将它作为我的实体OfflineDataRequestInfo的一部分插入到数据库表中。OfflineData但我得到一个错误

请问我该如何解决这个问题

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;

这是我的代码

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
)

这不是我插入的

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

标签: androidkotlinandroid-roompojo

解决方案


如我所见,您有两种解决方法:

  1. TypeConverter为你的对象写一个OfflineDataRequestInfo
  2. 添加注释@Embedded
@Embedded
@ColumnInfo(name="request_info_jsonX") 
val requestInfoJsonX: OfflineDataRequestInfo

推荐阅读