ビューを作成してデータベースに保存する

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

ビューをデータベースに関連付ける

このビューをデータベースに含めるには、アプリの @Database アノテーションに views プロパティを追加します。

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