Maison  >  Article  >  Java  >  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 ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-27 11:01:01585parcourir

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

<code class="java">@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
}</code>

Utilisation de @IdClass

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

<code class="java">@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;
}</code>

Duplication 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 :

<code class="java">YourEntity newVersion = new YourEntity();
newVersion.setMyKey(new MyKey(1, 1)); // new version
newVersion.setColumnA("Some Other Data");
entityManager.persist(newVersion);</code>

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