Junior — Middle
Comment établir une relation entre deux tables dans une base de données utilisant Room?
sobes.tech IA
Réponse de l'IA
Dans Room, la relation entre deux tables est établie à l'aide de clés étrangères et d'annotations, ainsi que par des classes spéciales pour combiner les données.
-
Clé étrangère (Foreign Key) — dans l'entité (Entity), vous indiquez un champ avec l'annotation
@ForeignKey, qui fait référence à la clé primaire d'une autre table. -
Relations — pour obtenir des données liées, on crée des classes POJO avec des annotations
@Relation, qui permettent d'obtenir des objets imbriqués des tables liées.
Exemple de relation "un à plusieurs":
@Entity
données classe User(
@PrimaryKey val userId: Int,
val name: String
)
@Entity(
foreignKeys = [ForeignKey(
entity = User::class,
parentColumns = ["userId"],
childColumns = ["userOwnerId"],
onDelete = ForeignKey.CASCADE
)]
)
données classe Book(
@PrimaryKey val bookId: Int,
val title: String,
val userOwnerId: Int // clé étrangère
)
// Classe pour obtenir l'utilisateur avec ses livres
données classe UserWithBooks(
@Embedded val user: User,
@Relation(
parentColumn = "userId",
entityColumn = "userOwnerId"
)
val books: List<Book>
)
Ainsi, Room reliera automatiquement les tables et permettra d'obtenir des données liées via le DAO.