Ansichten in einer Datenbank erstellen

Version 2.1.0 und höher der Room Persistence Library bietet Unterstützung für SQLite-Datenbankansichten, sodass Sie eine Abfrage in eine Klasse kapseln können. „Room“ bezeichnet diese abfragegestützten Klassen als Ansichten und verhalten sich wie einfache Datenobjekte, wenn sie in einem DAO verwendet werden.

Ansicht erstellen

Fügen Sie einer Klasse die Annotation @DatabaseView hinzu, um eine Ansicht zu erstellen. Legen Sie als Wert der Annotation die Abfrage fest, die die Klasse darstellen soll.

Das folgende Code-Snippet enthält ein Beispiel für eine Ansicht:

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;
}

Ansicht mit Ihrer Datenbank verknüpfen

Wenn Sie diese Ansicht in die Datenbank Ihrer App aufnehmen möchten, fügen Sie das Attribut views in die Annotation @Database Ihrer App ein:

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();
}