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-ի միջոցով։