Mappage des clés composites avec JPA et Hibernate
Dans le schéma SQL fourni, la table Time a une clé primaire composite composée de levelStation et confPathID champs. Le mappage de ce type de clé dans JPA et Hibernate nécessite des annotations spéciales pour représenter la clé primaire composée.
Utilisation de l'annotation IdClass
Une option consiste à définir une classe Java pour la clé composite à l'aide de l'annotation @IdClass. La classe doit avoir des champs correspondant aux colonnes de clé primaire, ainsi que des méthodes getters, setters, equals et hashCode :
public class TimePK implements Serializable { private Integer levelStation; private Integer confPathID; // Getters, setters, equals, hashCode }
La classe d'entité est ensuite annotée avec @IdClass et l'objet clé composite :
@Entity @IdClass(TimePK.class) class Time implements Serializable { @Id private Integer levelStation; @Id private Integer confPathID; // Other properties }
Utilisation de l'EmbeddedId Annotation
Alternativement, vous pouvez utiliser l'annotation @EmbeddedId pour définir une classe contenant la clé composite :
@Embeddable public class TimePK implements Serializable { private Integer levelStation; private Integer confPathID; // Getters, setters, equals, hashCode }
La classe d'entité est ensuite annotée avec @EmbeddedId et le composite intégré objet clé :
@Entity class Time implements Serializable { @EmbeddedId private TimePK timePK; // Other properties }
Différences entre IdClass et EmbeddedId
@IdClass et @EmbeddedId permettent le mappage de clés primaires composites. Cependant, il existe quelques différences mineures :
Le choix entre @IdClass et @EmbeddedId dépend de la sémantique spécifique de votre candidature.
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!