Maison > Java > javaDidacticiel > Comment mapper des clés composites avec JPA et Hibernate à l'aide de « @IdClass » ou « @EmbeddedId » ?

Comment mapper des clés composites avec JPA et Hibernate à l'aide de « @IdClass » ou « @EmbeddedId » ?

DDD
Libérer: 2024-12-11 04:55:10
original
153 Les gens l'ont consulté

How to Map Composite Keys with JPA and Hibernate Using `@IdClass` or `@EmbeddedId`?

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
}
Copier après la connexion

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
}
Copier après la connexion

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
}
Copier après la connexion

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
}
Copier après la connexion

Différences entre IdClass et EmbeddedId

@IdClass et @EmbeddedId permettent le mappage de clés primaires composites. Cependant, il existe quelques différences mineures :

  • @IdClass spécifie qu'une combinaison unique de champs forme la clé primaire, mais ils n'ont pas de signification distincte.
  • @EmbeddedId suggère que la clé composite est une entité significative à part entière.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal