Проблема с получением перечисления комнаты вызывает ошибку соответствия - PullRequest
0 голосов
/ 06 августа 2020

У меня следующие модели -


@Entity(tableName = ACTIVITIES_TABLE, primaryKeys = ["id"])
open class ActivityModel(
    open var actionType: ActivityEntity.ActivityAction,
    open var date: Date,
    open var creatorFirstName: String,
    open var creatorLastName: String,
    open var activityTitle: String,
    open var id: String = UUID.randomUUID().toString()
) : ModelWithId {
    override fun fetchId(): String = id
}

/*This model is an extension to the base model,
it is being fetched from the dao but not saved into the DB.*/
data class ApplicationActivitiesListModel(
    @Embedded(prefix = "")
    override var actionType: ActivityEntity.ActivityAction,
    @Embedded(prefix = "_")
    override var date: Date,
    @Embedded(prefix = "_")
    override var creatorFirstName: String,
    @Embedded(prefix = "_")
    override var creatorLastName: String,
    @Embedded(prefix = "_")
    override var activityTitle: String,
    var groupName: String
) : ActivityModel(actionType, date, creatorFirstName, creatorLastName, activityTitle)


И следующий метод DAO -

@Query(
        """
        select 
        activities.date as date,
        activities.`action` as actionType, 
        groups.groupName as groupName,
        friends.firstName as creatorFirstName, 
        friends.lastName as creatorLastName, 
        activities.activityTitle as activityTitle
        from $ACTIVITIES_TABLE as activities
        inner join $GROUPS_TABLE as groups on activities.groupId = groups.id
        inner join $FRIENDS_TABLE as friends on activities.createdByUser = friends.id
        order by activities.date desc
        limit 100"""
    )
    fun getAllApplicationActivities(): LiveData<List<ApplicationActivitiesListModel>>

Я получаю следующие ошибки -

.../ActivityEntity.java:171: 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 static enum ActivityAction {
                  ^.../ActivityEntity.java:178: error: Cannot find setter for field.
        private final java.lang.String value = null;
.../ActivitiesDao.java:17: warning:  com.teamit.model.joined_models.ApplicationActivitiesListModel has some fields
[id, value] which are not returned by the query. If they are not supposed to be read from the result, you can mark them with @Ignore annotation.
You can suppress this warning by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH). Columns returned by the query: date, actionType, groupName, creatorFirstName, creatorLastName, activityTitle. 
Fields in com.teamit.model.joined_models.ApplicationActivitiesListModel: groupName, actionType, date, creatorFirstName, creatorLastName, activityTitle, id, value.

Я правда не могу понять, что происходит и почему я не могу скомпилировать свой код. Это сводит меня с ума.

По какой-то причине он видит "value", строковое имя моего перечисления как обязательное поле, которое мне не хватает, и не позволяет мне продолжить его, потому что мне не хватает информации.

Это неправда.

Что происходит?

...