La libreria di persistenza Room supporta le visualizzazioni del database SQLite, che consentono di incapsulare una query in una classe. Room si riferisce a queste classi supportate da query come visualizzazioni e puoi utilizzarle come oggetti dati in un Data Access Object (DAO).
Crea una vista
Per creare una visualizzazione, aggiungi l'annotazione @DatabaseView a una classe. Imposta il valore dell'annotazione sulla query che la classe rappresenta.
Il seguente snippet di codice fornisce un esempio di visualizzazione:
@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? )
Associa una visualizzazione al database
Per includere questa visualizzazione nel database, aggiungi la views proprietà all'
annotazione @Database della tua app:
@Database( entities = [User::class, Department::class], views = [UserDetail::class], version = 1 ) abstract class AppDatabase : RoomDatabase() { abstract fun userDao(): UserDao }