Kotlin 使用Room实体类作为模型,同时使用数据库中的ionre字段

Kotlin 使用Room实体类作为模型,同时使用数据库中的ionre字段,kotlin,entity,android-room,data-class,Kotlin,Entity,Android Room,Data Class,我正在使用实体类作为API响应的模型它有列表字段,我希望在序列化阶段使用它,但我希望从存储在数据库中忽略它,因为它需要类型转换器,我不希望这样 @Entity(tableName = "USER") data class User( @Ignore @SerializedName("address") val address: List<Address>?, @SerializedName("auth_token") @ColumnInfo(

我正在使用实体类作为API响应的模型它有
列表
字段,我希望在序列化阶段使用它,但我希望从存储在数据库中忽略它,因为它需要类型转换器,我不希望这样


@Entity(tableName = "USER")
data class User(
    @Ignore
    @SerializedName("address")
    val address: List<Address>?,
    @SerializedName("auth_token")
    @ColumnInfo(name = "authToken")
    val authToken: String?)


提示:我不想将此字段存储在db

我想问题在于您没有为变量地址指定默认值。试试这个:

@Entity(tableName = "USER")
data class User(
  @SerializedName("auth_token")
  @ColumnInfo(name = "authToken")
  val authToken: String?
  @Ignore
  @SerializedName("address")
  val address: List<Address>? = null,
  )
@实体(tableName=“USER”)
数据类用户(
@SerializedName(“身份验证令牌”)
@ColumnInfo(name=“authToken”)
val authToken:字符串?
@忽略
@序列化名称(“地址”)
val地址:列表?=空,
)

错误告诉您出了什么问题:

您可以有[…]个构造函数,其参数与字段匹配(按名称和名称) (类型)

Room必须知道如何从数据库构造对象。在参数上使用@Ignore时,它不会列为字段。这就是参数和字段不匹配的原因

因此,不应在构造函数中放置@Ignored字段。 尝试执行以下操作:

@Entity(tableName = "USER")
data class User(
    @SerializedName("auth_token")
    @ColumnInfo(name = "authToken")
    val authToken: String?) {

    @Ignore
    @SerializedName("address")
    val address: List<Address>? = null
@实体(tableName=“USER”)
数据类用户(
@SerializedName(“身份验证令牌”)
@ColumnInfo(name=“authToken”)
val authToken:字符串?){
@忽略
@序列化名称(“地址”)
val地址:列表?=null
}

@Entity(tableName = "USER")
data class User(
    @SerializedName("auth_token")
    @ColumnInfo(name = "authToken")
    val authToken: String?) {

    @Ignore
    @SerializedName("address")
    val address: List<Address>? = null