Rumah  >  Artikel  >  Java  >  Bagaimana untuk Melaksanakan Versi Data dengan Kunci Utama Komposit dalam JPA?

Bagaimana untuk Melaksanakan Versi Data dengan Kunci Utama Komposit dalam JPA?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 11:01:01585semak imbas

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

Pengendalian Kunci Utama Komposit dengan JPA

Versi data memerlukan keupayaan untuk menduplikasi entiti dengan versi berbeza, menjadikannya penting untuk mencipta komposit kunci utama untuk entiti.

Definisi Entiti dengan Kunci Utama Komposit

Dalam JPA, kunci primer komposit boleh ditakrifkan sama ada menggunakan anotasi @EmbeddedId atau @IdClass.

Menggunakan @EmbeddedId

Tentukan kelas berasingan (@Embedded anotasi) untuk kunci dan kemudian anotasikannya dengan @EmbeddedId dalam entiti:

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

Menggunakan @IdClass

Sebagai alternatif, anotasi kelas dengan @IdClass dan takrifkan atribut ID sebagai @Id dalam kelas:

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

Pendua Entiti dengan Versi

Setelah entiti ditakrifkan, ia boleh diduplikasi dengan versi baharu. Contohnya, untuk mencipta versi baharu entiti pertama dengan 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>

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Versi Data dengan Kunci Utama Komposit dalam JPA?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn