Junior — Middle
Cum se stabilește o relație între două tabele într-o bază de date care utilizează Room?
sobes.tech AI
Răspuns de la AI
În Room, relația dintre două tabele se stabilește prin chei externe și adnotări, precum și cu ajutorul unor clase speciale pentru combinarea datelor.
-
Cheie externă (Foreign Key) — în entitate (Entity), indicați un câmp cu adnotarea
@ForeignKey, care face referire la cheia primară a altei tabele. -
Relații — pentru a obține date legate, se creează clase POJO cu adnotări
@Relation, care permit obținerea de obiecte imbricate din tabelele legate.
Exemplu de relație "unu la mulți":
@Entity
date class User(
@PrimaryKey val userId: Int,
val name: String
)
@Entity(
foreignKeys = [ForeignKey(
entity = User::class,
parentColumns = ["userId"],
childColumns = ["userOwnerId"],
onDelete = ForeignKey.CASCADE
)]
)
date class Book(
@PrimaryKey val bookId: Int,
val title: String,
val userOwnerId: Int // cheie externă
)
// Clasă pentru obținerea utilizatorului cu cărțile sale
date class UserWithBooks(
@Embedded val user: User,
@Relation(
parentColumn = "userId",
entityColumn = "userOwnerId"
)
val books: List<Book>
)
Astfel, Room va conecta automat tabelele și va permite obținerea datelor legate prin DAO.