Maison >Java >javaDidacticiel >Comment les clés primaires composites peuvent-elles être utilisées pour gérer les versions de données dans JPA ?

Comment les clés primaires composites peuvent-elles être utilisées pour gérer les versions de données dans JPA ?

DDD
DDDoriginal
2024-10-30 16:44:25539parcourir

How can composite primary keys be used to manage data versions in JPA?

Création et gestion d'une clé primaire composite dans JPA

Pour gérer les versions de données au sein d'une entité, la création d'une clé primaire composite permet la duplication de entrées basées sur les numéros de version. Considérez l'implémentation suivante :

@Entity
public class YourEntity {
    @EmbeddedId
    private MyKey id;
    private String columnA;
    // Getters and setters omitted for brevity
}

@Embeddable
public class MyKey implements Serializable {
    private int id;
    private int version;
    // Getters and setters omitted for brevity
}

En utilisant cette approche, les champs id et version forment la clé primaire composite. Cela permet la création de plusieurs versions pour chaque enregistrement de données :

Entity 1: id = 1, version = 0, columnA = "Data Entry 1"
Entity 2: id = 1, version = 1, columnA = "Updated Data Entry 1"

Une méthode alternative pour définir une clé primaire composite consiste à utiliser l'annotation @IdClass :

@Entity
@IdClass(MyKey.class)
public class YourEntity {
    @Id
    private int id;
    @Id
    private int version;
    private String columnA;
    // Getters and setters omitted for brevity
}

public class MyKey implements Serializable {
    private int id;
    private int version;
    // Getters and setters omitted for brevity
}

Dans ce cas, la classe MyKey sert de classe de clé primaire, et les champs id et version qu'elle contient sont tous deux annotés avec @Id.

En utilisant les annotations @EmbeddedId ou @IdClass, JPA peut gérer efficacement les clés primaires composites, faciliter le stockage et la récupération des versions de données au sein d'une seule entité.

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!

Déclaration:
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