Комната Android: у сущностей и Pojos должен быть общедоступный конструктор Kotli - PullRequest
0 голосов
/ 28 февраля 2019

Я получаю эту ошибку 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), когда я внедрил ROOM.И я попытался добавить пустой конструктор, но у меня ничего не вышло.Так что только я могу избежать этой проблемы, удаляя embedded, но я хотел бы найти другое решение, если это возможно.

Это моя сущность

 @Entity(tableName = "events")
class Event(
        @ColumnInfo(name = "name")
        @SerializedName("name")
        @Expose
        var name: String,

        @PrimaryKey
        @ColumnInfo(name = "id")
        @SerializedName("id")
        @Expose
        var id: String,

        @Embedded
        var images: List<Image>,

        @Embedded
        var dates: Dates,

        @Embedded
        var venues: Venues,
        var favorite: Boolean
)

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

вам нужно добавить конструктор по умолчанию, который выглядит примерно так: Kotlin (первичный конструктор класса уже является первой строкой; ключевое слово constructor в большинстве случаев опускается; см. документы ):

@Entity(tableName = "events")
class Event() {
    ...
}

или явно, без пропуска ключевого слова constructor:

@Entity(tableName = "events")
class Event constructor() {

}

var favorite не содержит аннотации, и эти @Expose аннотации могут быть бесполезны.убедитесь, что встроенные классы также имеют основной конструктор.при наличии нескольких конструкторов в классе нужно добавить аннотацию @Ignore ко всем, кроме одного, чтобы он знал, какой из них использовать ... и всегда должен быть пустым конструктором, который не принимает никаких аргументов.

0 голосов
/ 28 февраля 2019

Вы можете сделать это так

@Entity(tableName = "events")
class Event(
        @ColumnInfo(name = "name")
        @SerializedName("name")
        @Expose
        var name: String,

        @PrimaryKey
        @ColumnInfo(name = "id")
        @SerializedName("id")
        @Expose
        var id: String){

        var images: List<Image>? = null
        var dates: Dates? = null
        var venues: Venues? = null
        var favorite: Boolean = false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...