Создание представлений в базе данных

Библиотека Room для работы с данными поддерживает представления баз данных SQLite , которые позволяют инкапсулировать запрос в класс. Room называет эти классы, использующие запросы, представлениями , и вы можете использовать их в качестве объектов данных в объекте доступа к данным (DAO) .

Создать представление

Для создания представления добавьте аннотацию @DatabaseView к классу. Установите значение аннотации равным запросу, который представляет этот класс.

Приведённый ниже фрагмент кода демонстрирует пример представления:

@DatabaseView(
    """
    SELECT User.id, User.name, User.departmentId, Department.name AS departmentName
    FROM User INNER JOIN Department ON User.departmentId = Department.id
    """
)
data class UserDetail(
    val id: Long,
    val name: String?,
    val departmentId: Long,
    val departmentName: String?
)

Свяжите представление с вашей базой данных.

Чтобы добавить это представление в вашу базу данных, добавьте свойство views в аннотацию @Database вашего приложения:

@Database(
    entities = [User::class, Department::class],
    views = [UserDetail::class],
    version = 1
)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}