У меня следующие модели -
@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", строковое имя моего перечисления как обязательное поле, которое мне не хватает, и не позволяет мне продолжить его, потому что мне не хватает информации.
Это неправда.
Что происходит?