Сначала я знаю, что это повторяющийся вопрос , но помеченный ответ не устранил ошибку.
Я пытаюсь создать общий интерфейс Dao в моей Библиотеке комнатного сопротивления после это руководство , но не может устранить ошибку "Тип параметра должен быть классом, аннотированным @Entity или его коллекцией / массивом" для универсального T в GenericDao.
GenericDao:
@Dao
public interface GenericDao<T> {
@Insert
long insert(T object);
@Update
void update(T... objects);
@Delete
void delete(T... objects);
}
Унаследованный Dao:
@Dao
public abstract class ExerciseDao implements GenericDao<Exercise> {
@Query("SELECT * FROM exercises")
public abstract LiveData<List<Exercise>> getAllExercises();
}
Объект:
@Entity(tableName = "exercises",
indices = {@Index(value = {"name"}, unique = true)})
public class Exercise {
@PrimaryKey (autoGenerate = true)
int id;
@ColumnInfo(name = "name")
private String name;
@ColumnInfo(name = "muscle_part")
private int musclePart;
@ColumnInfo(name = "is_shown")
private boolean isShown;
public Exercise(String name, int musclePart, boolean isShown) {
this.name = name;
this.musclePart = musclePart;
this.isShown = isShown;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMusclePart() {
return musclePart;
}
public void setMusclePart(int musclePart) {
this.musclePart = musclePart;
}
public boolean isShown() {
return isShown;
}
public void setShown(boolean shown) {
isShown = shown;
}
}
Я пробовал:
- ИзменитьGenericDao к абстрактному классу.
- Добавление / удаление аннотации @Dao в GenericDao
- Добавление универсального объекта
- Переопределение методов в дочернем Daos
- ...
Но всегда с ошибкой.У кого-нибудь есть идеи, как решить эту проблему?