Criar visualizações em um banco de dados

A biblioteca de persistência do Room oferece suporte a visualizações de banco de dados do SQLite, que permitem encapsular uma consulta em uma classe. O Room se refere a essas classes compatíveis por consulta como visualizações, e você pode usá-las como objetos de dados em um objeto de acesso a dados (DAO).

Criar uma visualização

Para criar uma visualização, adicione a @DatabaseView anotação a uma classe. Defina o valor da anotação como a consulta que a classe representa.

O snippet de código a seguir fornece um exemplo de visualização.

@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?
)

Associar uma visualização ao seu banco de dados

Para incluir essa visualização no seu banco de dados, adicione a views propriedade ao seu app's @Database anotação:

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