"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment implémenter le contrôle de version des données avec des clés primaires composites dans JPA ?

Comment implémenter le contrôle de version des données avec des clés primaires composites dans JPA ?

Publié le 2024-11-16
Parcourir:386

How to Implement Data Versioning with Composite Primary Keys in JPA?

Gestion des clés primaires composites avec JPA

La gestion des versions des données nécessite la possibilité de dupliquer une entité avec différentes versions, ce qui rend essentiel la création d'un composite clé primaire pour les entités.

Définition d'entité avec clé primaire composite

Dans JPA, les clés primaires composites peuvent être définies à l'aide des annotations @EmbeddedId ou @IdClass.

Utilisation de @EmbeddedId

Définissez une classe distincte (@Embeddable annotée) pour la clé, puis annotez-la avec @EmbeddedId dans l'entité :

@Entity
public class YourEntity {
    @EmbeddedId
    private MyKey myKey;

    private String columnA;
    // getters and setters
}

@Embeddable
public class MyKey implements Serializable {

    private int id;
    private int version;
    // getters and setters
}

Utilisation de @IdClass

Vous pouvez également annoter la classe avec @IdClass et définir les attributs d'ID comme @Id dans la classe :

@Entity
@IdClass(MyKey.class)
public class YourEntity {

    @Id
    private int id;

    @Id
    private int version;

}

public class MyKey implements Serializable {
   private int id;
   private int version;
}

Duplication d'entités avec versions

Une fois l'entité définie, elle peut être dupliquée avec une nouvelle version. Par exemple, pour créer une nouvelle version de la première entité avec id=1 :

YourEntity newVersion = new YourEntity();
newVersion.setMyKey(new MyKey(1, 1)); // new version
newVersion.setColumnA("Some Other Data");
entityManager.persist(newVersion);
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3