Rumah > Java > javaTutorial > Bagaimana untuk Memetakan Kunci Komposit dengan JPA dan Hibernate Menggunakan `@IdClass` atau `@EmbeddedId`?

Bagaimana untuk Memetakan Kunci Komposit dengan JPA dan Hibernate Menggunakan `@IdClass` atau `@EmbeddedId`?

DDD
Lepaskan: 2024-12-11 04:55:10
asal
154 orang telah melayarinya

How to Map Composite Keys with JPA and Hibernate Using `@IdClass` or `@EmbeddedId`?

Memetakan Kekunci Komposit dengan JPA dan Hibernate

Dalam skema SQL yang disediakan, jadual Masa mempunyai kunci utama komposit yang terdiri daripada levelStation dan confPathID padang. Pemetaan kekunci jenis ini dalam JPA dan Hibernate memerlukan anotasi khas untuk mewakili kunci utama kompaun.

Menggunakan Anotasi IdClass

Satu pilihan adalah untuk menentukan kelas Java untuk kunci komposit menggunakan anotasi @IdClass. Kelas harus mempunyai medan yang sepadan dengan lajur kunci utama, serta kaedah getter, setter, equals dan hashCode:

public class TimePK implements Serializable {
    private Integer levelStation;
    private Integer confPathID;

    // Getters, setters, equals, hashCode
}
Salin selepas log masuk

Kelas entiti kemudian diberi anotasi dengan @IdClass dan objek kunci komposit:

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

    // Other properties
}
Salin selepas log masuk

Menggunakan EmbeddedId Anotasi

Sebagai alternatif, anda boleh menggunakan anotasi @EmbeddedId untuk menentukan kelas yang mengandungi kunci komposit:

@Embeddable
public class TimePK implements Serializable {
    private Integer levelStation;
    private Integer confPathID;

    // Getters, setters, equals, hashCode
}
Salin selepas log masuk

Kelas entiti kemudian diberi anotasi dengan @EmbeddedId dan komposit terbenam kunci objek:

@Entity
class Time implements Serializable {
    @EmbeddedId
    private TimePK timePK;

    // Other properties
}
Salin selepas log masuk

Perbezaan antara IdClass dan EmbeddedId

Kedua-dua @IdClass dan @EmbeddedId membenarkan pemetaan kunci utama komposit. Walau bagaimanapun, terdapat beberapa perbezaan kecil:

  • @IdClass menyatakan bahawa gabungan unik medan membentuk kunci utama, tetapi ia tidak mempunyai makna yang berbeza.
  • @EmbeddedId mencadangkan bahawa kunci komposit ialah entiti yang bermakna dengan sendirinya.

Pilihan antara @IdClass dan @EmbeddedId bergantung pada semantik khusus aplikasi anda.

Atas ialah kandungan terperinci Bagaimana untuk Memetakan Kunci Komposit dengan JPA dan Hibernate Menggunakan `@IdClass` atau `@EmbeddedId`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan