Rumah >Java >javaTutorial >Bagaimana untuk Memetakan Kunci Komposit dalam JPA dan Hibernate menggunakan EmbeddedId atau IdClass?

Bagaimana untuk Memetakan Kunci Komposit dalam JPA dan Hibernate menggunakan EmbeddedId atau IdClass?

Susan Sarandon
Susan Sarandonasal
2024-12-03 05:22:16641semak imbas

How to Map Composite Keys in JPA and Hibernate using EmbeddedId or IdClass?

Memetakan Kekunci Komposit dengan JPA dan Hibernate

Memetakan kunci komposit dalam Java Persistence API (JPA) dan Hibernate boleh dicapai menggunakan EmbeddedId atau IdClass anotasi.

Dengan IdClass

  1. Tentukan kelas kunci utama yang berasingan (cth. TimePK) yang merangkum medan kunci komposit dan pengambil/penetap mereka.
  2. Anotasi entiti dengan anotasi @IdClass, menyatakan kelas kunci utama.
public class TimePK implements Serializable {
    private Integer levelStation;
    private Integer confPathID;
    // getters, setters
}

@Entity
@IdClass(TimePK.class)
class Time {
    @Id
    private Integer levelStation;
    @Id
    private Integer confPathID;
    // ...
}

Dengan EmbeddedId

  1. Begitu juga, tentukan kelas kunci primer yang berasingan ( cth., TimePK).
  2. Anotasi kelas kunci primer dengan @Embedded Anotasi.
  3. Anotasi entiti dengan anotasi @EmbeddedId dan nyatakan kelas kunci utama.
@Embeddable
public class TimePK implements Serializable {
    private Integer levelStation;
    private Integer confPathID;
    // getters, setters
}

@Entity
class Time {
    @EmbeddedId
    private TimePK timePK;
    // ...
}

Perbezaan

  • Semantik: EmbeddedId mencadangkan bahawa kunci komposit mempunyai makna tertentu, manakala IdClass lebih sesuai apabila gabungan medan hanyalah pengecam unik.
  • Sintaks Pertanyaan: Dengan EmbeddedId, medan kunci utama diakses melalui kelas kunci primer terbenam, manakala dengan IdClass medan boleh diakses secara langsung.

Rujukan

  • JPA 1.0 Spesifikasi: Seksyen 2.1.4, 9.1.14, dan 9.1.15

Atas ialah kandungan terperinci Bagaimana untuk Memetakan Kunci Komposit dalam JPA dan Hibernate menggunakan EmbeddedId atau IdClass?. 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