Junior — Middle
Wie stellt man eine Verbindung zwischen zwei Tabellen in einer Datenbank her, die Room verwendet?
sobes.tech KI
Antwort von AI
In Room wird die Beziehung zwischen zwei Tabellen durch Fremdschlüssel und Anmerkungen sowie durch spezielle Klassen zum Zusammenführen von Daten hergestellt.
-
Fremdschlüssel (Foreign Key) — in der Entität (Entity) gibt man ein Feld mit der Annotation
@ForeignKeyan, das auf den Primärschlüssel einer anderen Tabelle verweist. -
Beziehungen — um verbundene Daten zu erhalten, erstellt man POJO-Klassen mit den Annotations
@Relation, die verschachtelte Objekte aus verbundenen Tabellen ermöglichen.
Beispiel für eine "eins zu viele" Beziehung:
@Entity
datenklasse User(
@PrimaryKey val userId: Int,
val name: String
)
@Entity(
foreignKeys = [ForeignKey(
entity = User::class,
parentColumns = ["userId"],
childColumns = ["userOwnerId"],
onDelete = ForeignKey.CASCADE
)]
)
datenklasse Book(
@PrimaryKey val bookId: Int,
val title: String,
val userOwnerId: Int // Fremdschlüssel
)
// Klasse zum Abrufen des Benutzers mit seinen Büchern
datenklasse UserWithBooks(
@Embedded val user: User,
@Relation(
parentColumn = "userId",
entityColumn = "userOwnerId"
)
val books: List<Book>
)
Auf diese Weise verbindet Room die Tabellen automatisch und ermöglicht das Abrufen verbundener Daten über das DAO.