Library persistensi Room versi 2.1.0 dan yang lebih tinggi memberikan dukungan untuk tampilan database SQLite sehingga Anda dapat menyertakan kueri ke dalam class. Room merujuk pada class yang didukung kueri ini sebagai tampilan, dan berfungsi sama seperti objek data sederhana saat digunakan dalam DAO.
Membuat tampilan
Untuk membuat tampilan, tambahkan anotasi
@DatabaseView
ke class.
Tetapkan nilai anotasi ke kueri yang harus direpresentasikan oleh class tersebut.
Cuplikan kode berikut memberikan contoh tampilan:
Kotlin
@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? )
Java
@DatabaseView("SELECT user.id, user.name, user.departmentId," + "department.name AS departmentName FROM user " + "INNER JOIN department ON user.departmentId = department.id") public class UserDetail { public long id; public String name; public long departmentId; public String departmentName; }
Mengaitkan tampilan dengan database Anda
Untuk menyertakan tampilan ini sebagai bagian dari database aplikasi, sertakan
properti views
dalam anotasi @Database
aplikasi Anda:
Kotlin
@Database(entities = [User::class], views =[UserDetail::class], version = 1) abstract class AppDatabase : RoomDatabase() { abstract fun userDao(): UserDao }
Java
@Database(entities = {User.class}, views = {UserDetail.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract UserDao userDao(); }