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 }
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 }
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 }
Kelas entiti kemudian diberi anotasi dengan @EmbeddedId dan komposit terbenam kunci objek:
@Entity class Time implements Serializable { @EmbeddedId private TimePK timePK; // Other properties }
Perbezaan antara IdClass dan EmbeddedId
Kedua-dua @IdClass dan @EmbeddedId membenarkan pemetaan kunci utama komposit. Walau bagaimanapun, terdapat beberapa perbezaan kecil:
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!