Вот мой код. Я сделал все, как объяснил. Созданные представления помечены с помощью @DATABASEVIEW(value=?, viewName=?) Помечены представления в классе базы данных Room. Но когда я запрашиваю select против VIEWS, выбрасывая исключение в процессе сборки: Существует проблема с запросом: [SQLITE_ERROR] SQL ошибка или отсутствует база данных (такой таблицы нет: USER_RATE_INFO_VIEW. Я изучил автоматически созданные классы реализации базы данных и не нашел сценариев создания представлений.
@Database(entities = {BankEntity.class, BankRateEntity.class, CommentEntity.class, ExchangeOfficeEntity.class,
FBankEntity.class, FBankRateEntity.class, FRateEntity.class, RateByUserEntity.class,
RateInfoEntity.class, UserEntity.class, UserMessageEntity.class, UserRateEntity.class},
views = {BankRateView.class, ChatView.class, FBankRateView.class, RateInfoView.class, UserRateVew.class},
version = 9)
public abstract class RoomDB extends RoomDatabase {
private static RoomDB INSTANCE;
public abstract RoomDao roomDao();
public static RoomDB getDatabase(Context context) {
if (INSTANCE == null) {
INSTANCE =
Room.databaseBuilder(context.getApplicationContext(), RoomDB.class, "database.db")
// allow queries on the main thread.
// Don't do this on a real app! See PersistenceBasicSample for an example.
.allowMainThreadQueries()
.addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_4_5, MIGRATION_5_6, MIGRATION_6_7, MIGRATION_7_8, MIGRATION_8_9)
.build();
}
return INSTANCE;
}
}
@Getter
@Setter
@DatabaseView(value = TUserRate.VIEW_SQL_CMD, viewName = TUserRate.VIEW_NAME)
public class UserRateVew extends UserRateEntity{
@ColumnInfo(name = TUserRate.COLUMN_USER_RATING)
private float userRating;
}