Junior — Middle
Чӣ гуна пайваст кардани ду ҷадвал дар пойгоҳи додаҳо, ки Room-ро истифода мебарад?
sobes.tech AI
Ҷавоб аз AI
Дар Room, муносибати байни ду ҷадвал тавассути калидҳои хориҷӣ ва аннотацияҳо, инчунин бо истифода аз синфҳои махсус барои пайваст кардани маълумотҳо барқарор мешавад.
-
Калиди хориҷӣ (Foreign Key) — дар объект (Entity), шумо майдони бо аннотатсияи
@ForeignKeyнишон медиҳед, ки ба калиди асосии дигар ҷадвал ишора мекунад. -
Муносибатҳо — барои гирифтани маълумоти вобаста, синфҳои POJO бо аннотатсияҳои
@Relationсохта мешаванд, ки имкон медиҳанд, объектҳои дарунсохт аз ҷадвалҳои вобаста гирифта шаванд.
Масалан, муносибати "як ба бисёре":
@Entity
data class User(
@PrimaryKey val userId: Int,
val name: String
)
@Entity(
foreignKeys = [ForeignKey(
entity = User::class,
parentColumns = ["userId"],
childColumns = ["userOwnerId"],
onDelete = ForeignKey.CASCADE
)]
)
data class Book(
@PrimaryKey val bookId: Int,
val title: String,
val userOwnerId: Int // калиди хориҷӣ
)
// Синф барои гирифтани корбар бо китобҳояш
data class UserWithBooks(
@Embedded val user: User,
@Relation(
parentColumn = "userId",
entityColumn = "userOwnerId"
)
val books: List<Book>
)
Тавре ки мебинед, Room автоматӣ таблиҳоро пайваст мекунад ва имкон медиҳад, ки маълумоти вобаста тавассути DAO гирифта шаванд.