Buat tampilan ke dalam database

Library persistensi Room mendukung tampilan database SQLite, yang memungkinkan Anda menyertakan kueri dalam class. Room merujuk pada class yang didukung kueri ini sebagai tampilan, dan Anda dapat menggunakannya sebagai objek data dalam objek akses data (DAO).

Membuat tampilan

Untuk membuat tampilan, tambahkan anotasi @DatabaseView ke class. Tetapkan nilai anotasi ke kueri yang direpresentasikan oleh class.

Cuplikan kode berikut memberikan contoh tampilan:

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

Mengaitkan tampilan dengan database Anda

Untuk menyertakan tampilan ini dalam database, tambahkan properti views ke anotasi @Database aplikasi Anda:

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