Maison >Java >javaDidacticiel >Comment implémenter des clés primaires composites pour les entrées de données versionnées dans JPA ?

Comment implémenter des clés primaires composites pour les entrées de données versionnées dans JPA ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 07:36:02564parcourir

How to Implement Composite Primary Keys for Versioned Data Entries in JPA?

Création et gestion de clés primaires composites dans JPA

Scénario :

Envisagez un scénario dans lequel vous devez stocker plusieurs versions de la même saisie de données, représentée par les colonnes id et Version. Le but est de créer une entité capable de dupliquer des entrées avec différentes versions.

Définition de l'entité :

Pour définir une entité avec une clé primaire composite, vous pouvez utiliser le approche suivante :

  1. Classe intégrée : Créez une classe intégrée contenant les champs clés. Cette classe sera utilisée comme EmbeddedId dans l'entité.
<code class="java">@Embeddable
public class MyKey implements Serializable {

    @Column(name = "Id", nullable = false)
    private int id;

    @Column(name = "Version", nullable = false)
    private int version;

    // Getters and setters
}</code>
  1. Classe d'entité : La classe d'entité aura une référence à la classe intégrée comme classe principale key.
<code class="java">@Entity
public class YourEntity {

    @EmbeddedId
    private MyKey myKey;

    @Column(name = "ColumnA")
    private String columnA;

    // Getters and setters
}</code>

Une autre approche :

Alternativement, l'annotation @IdClass peut être utilisée pour définir une clé primaire composite. Cette approche permet d'utiliser l'annotation @Id directement sur les champs clés.

<code class="java">@Entity
@IdClass(MyKey.class)
public class YourEntity {

    @Id
    private int id;

    @Id
    private int version;

    // Getters and setters
}</code>
<code class="java">public class MyKey implements Serializable {

    private int id;
    private int version;

    // Getters and setters
}</code>

Duplication d'entités :

Pour dupliquer une entité avec un autre version, créez une nouvelle instance avec le même identifiant mais une valeur de version différente. Cela créera une entrée distincte dans la base de données représentant la nouvelle version.

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