Junior — Middle
Come stabilire una relazione tra due tabelle in un database che utilizza Room?
sobes.tech AI
Risposta dell'AI
In Room, la relazione tra due tabelle viene stabilita tramite chiavi esterne e annotazioni, nonché con classi speciali per combinare i dati.
-
Chiave Esterna (Foreign Key) — nell'entità (Entity), si indica un campo con l'annotazione
@ForeignKey, che fa riferimento alla chiave primaria di un'altra tabella. -
Relazioni — per ottenere dati correlati, si creano classi POJO con annotazioni
@Relation, che permettono di ottenere oggetti annidati da tabelle collegate.
Esempio di relazione "uno a molti":
@Entity
dati classe User(
@PrimaryKey val userId: Int,
val name: String
)
@Entity(
foreignKeys = [ForeignKey(
entity = User::class,
parentColumns = ["userId"],
childColumns = ["userOwnerId"],
onDelete = ForeignKey.CASCADE
)]
)
dati classe Book(
@PrimaryKey val bookId: Int,
val title: String,
val userOwnerId: Int // chiave esterna
)
// Classe per ottenere l'utente con i suoi libri
dati classe UserWithBooks(
@Embedded val user: User,
@Relation(
parentColumn = "userId",
entityColumn = "userOwnerId"
)
val books: List<Book>
)
In questo modo, Room collegherà automaticamente le tabelle e permetterà di ottenere dati correlati tramite il DAO.