Sobes.tech
Junior — Middle

Ինչպես կապ հաստատել երկու աղյուսակների միջև, որոնք օգտագործում են Room-ը:

sobes.tech AI

Պատասխան AI-ից

Room-ում երկու աղյուսակների միջև կապը հաստատվում է արտաքին բանալիների և նշումների միջոցով, ինչպես նաև հատուկ դասակների միջոցով տվյալների միացման համար:

  1. Արտաքին բանալին (Foreign Key) — սուբյեկտում (Entity) նշում եք դաշտը @ForeignKey նշումով, որը հղում է այլ աղյուսակի հիմնական բանալու վրա:

  2. Կապեր — կապված տվյալները ստանալու համար ստեղծվում են 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-ի միջոցով։