Как игнорировать поле сущности с комнатой - PullRequest
0 голосов
/ 08 января 2019

У меня есть класс данных, который я создал для этой базы данных Entity.

это мой класс данных:

@Entity
@Parcelize
data class Tapligh(

    @PrimaryKey(autoGenerate = true)
    var id: Long,

    @SerializedName("title") var title: String?,
    @SerializedName("type") var type: Int?,
    @SerializedName("os") var os: Int?,
    @SerializedName("logo") var logo: String?,
    @SerializedName("template") var template: String?,
    @SerializedName("action") var action: String?,
    @SerializedName("date") var date: String?,
    @Embedded
    @SerializedName("videos") var videos: Videos?,

) : Parcelable {

    fun getTaplighType(): Int {

        return when (this.type) {

            0 -> TaplighType.IMAGE.type
            1 -> TaplighType.VIDEO.type
            else -> TaplighType.NATIVE.type
        }
    }
}

@Parcelize
data class Videos(

    @SerializedName("land") var land: String?,
    @SerializedName("port") var port: String?
) : Parcelable

Теперь, добавив поле ниже в мой класс данных Tapligh, я получу ошибку:

 @Ignore
 @SerializedName("images") var images: List<String>?

Я получаю эту ошибку:

error: Entities and Pojos must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type).
public final class Tapligh implements android.os.Parcelable {
             ^

Ответы [ 2 ]

0 голосов
/ 08 января 2019

В предоставленном Taplight есть ошибки:

@PrimaryKey(autoGenerate = true) var id: Long,
@SerializedName("title") var title: String?,
@SerializedName("type") var type: Int?,
@SerializedName("os") var os: Int?,
@SerializedName("logo") var logo: String?,
@SerializedName("template") var template: String?,
@SerializedName("action") var action: String?,
@SerializedName("date") var date: String?,
@Embedded
@SerializedName("videos") var videos: Videos?) {

constructor() : this(0,null,null,null,null,null,null,null,null)

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

0 голосов
/ 08 января 2019

Иногда новое поле создает ошибку, когда класс реализует Parcelable, поэтому попробуйте удалить Parcelable и тело класса, поместить Parcelable и снова реализовать члены или просто реализовать интерфейс Serializable вместо Parcelable.

...