Le mappage des clés composites avec JPA et Hibernate
Le mappage des clés composites dans l'API Java Persistence (JPA) et Hibernate peut être réalisé à l'aide du EmbeddedId ou IdClass annotations.
Avec IdClass
- Définissez une classe de clé primaire distincte (par exemple, TimePK) qui encapsule les champs de clé composites et leurs getters/setters.
- Annoter l'entité avec l'annotation @IdClass, en spécifiant la clé primaire class.
public class TimePK implements Serializable {
private Integer levelStation;
private Integer confPathID;
// getters, setters
}
@Entity
@IdClass(TimePK.class)
class Time {
@Id
private Integer levelStation;
@Id
private Integer confPathID;
// ...
}
Copier après la connexion
Avec EmbeddedId
- De même, définissez une classe de clé primaire distincte (par exemple, TimePK).
- Annotez la classe de clé primaire avec l'annotation @Embeddable.
- Annotez l'entité avec l'annotation @EmbeddedId et spécifiez la classe de clé primaire.
@Embeddable
public class TimePK implements Serializable {
private Integer levelStation;
private Integer confPathID;
// getters, setters
}
@Entity
class Time {
@EmbeddedId
private TimePK timePK;
// ...
}
Copier après la connexion
Différences
-
Sémantique : EmbeddedId suggère que la clé composite a une signification spécifique, tandis que IdClass est plus adaptée lorsque la combinaison de champs est simplement une clé unique. identifiant.
-
Syntaxe de requête : Avec EmbeddedId, les champs de clé primaire sont accessibles via la classe de clé primaire intégrée, tandis qu'avec IdClass, les champs sont accessibles directement.
Références
- Spécification JPA 1.0 : Section 2.1.4, 9.1.14 et 9.1.15
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!