MappedBy joue un rôle crucial dans la gestion des relations bidirectionnelles dans l'API Java Persistence (JPA) et Hibernate pour le mappage objet-relationnel. Il s'agit d'un moyen pratique de modéliser et de naviguer dans des relations complexes dans un contexte de base de données.
Dans votre exemple spécifique, où la compagnie aérienne possède de nombreux AirlineFlights et de nombreux AirlineFlights appartiennent à une seule compagnie aérienne. , mappedBy est utilisé pour éviter le stockage répétitif d'informations. Puisque vous souhaitez qu'AirlineFlights soit la classe détenue, vous spécifiez l'attribut mappedBy dans la classe Airline :
<code class="java">@OneToMany(fetch=FetchType.LAZY, cascade = {CascadeType.ALL}) @JoinColumn(name="IDAIRLINE") public Set<AirlineFlight> getAirlineFlights() { return airlineFlights; }</code>
Le paramètre mappedBy dans l'annotation @OneToMany spécifie que la colonne IDAIRLINE de la table AirlineFlights est une clé étrangère qui correspond à la clé primaire dans la table Airline. De cette façon, lorsque vous interrogez un objet Airline, vous pouvez également récupérer sans effort ses AirlineFlights associés.
MappedBy sert plusieurs objectifs importants :
Dans votre exemple, la table AirplaneFlights a la colonne IDAIRLINE comme clé étrangère pointant vers la table Airline, mais la table Airline n'a pas de colonne IDAIRLINEFLIGHTS correspondante. Cette configuration suggère qu'AirlineFlights est l'entité propriétaire, même si votre exigence est d'avoir Airline comme propriétaire.
Pour résoudre ce problème, vous devez ajuster les annotations en conséquence. L'annotation @OneToMany sur la classe AirlineFlights doit être déplacée vers la classe AirlineFlight, et l'attribut mappedBy doit faire référence au champ « propriétaire » de la classe Airline :
<code class="java">@ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="IDAIRLINE", nullable=false) @MapsId public Airline getAirline() { return airline; }</code>
En spécifiant mappedBy et @MapsId, vous indiquez que le la clé primaire de la compagnie aérienne (et non la clé étrangère IDAIRLINE dans AirlineFlights) est utilisée pour définir la relation. Cela garantira que la compagnie aérienne est l'entité propriétaire et peut être récupérée avec empressement ou paresseusement selon les besoins.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!