Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Menjana Urutan Pangkalan Data untuk Lajur Bukan ID dalam JPA Hibernate?

Bagaimanakah Saya Boleh Menjana Urutan Pangkalan Data untuk Lajur Bukan ID dalam JPA Hibernate?

Linda Hamilton
Linda Hamiltonasal
2024-11-30 07:03:19774semak imbas

How Can I Generate Database Sequences for Non-ID Columns in Hibernate JPA?

Menggunakan Urutan Pangkalan Data untuk Lajur Bukan ID dalam JPA Hibernate

Apabila bekerja dengan Hibernate sebagai pembekal JPA, anda mungkin menghadapi keperluan untuk menjana nilai bagi lajur yang bukan sebahagian daripada pengecam. Malangnya, anotasi @GeneratedValue, yang lazimnya digunakan untuk kunci utama penambahan automatik, tidak boleh digunakan dalam senario ini.

Pertama sekali, adalah penting untuk memahami bahawa Hibernate/JPA tidak menjana nilai secara automatik untuk sifat bukan ID. Anotasi @GeneratedValue digunakan semata-mata untuk mengurus penjanaan kunci utama. Sebaliknya, nilai yang dijana pangkalan data dijangka.

Untuk mengatasi pengehadan ini, pertimbangkan untuk mencipta entiti berasingan dengan pengecam yang dijana, yang dikenali sebagai "Entiti Utama Pengganti." Lajur Bukan ID yang dipersoalkan kemudiannya boleh dikaitkan dengan entiti pengganti ini menggunakan perhubungan OneToOne.

Contoh Pelaksanaan:

// Surrogate Key Entity
@Entity
public class SurrogateEntity {
  @Id
  @GeneratedValue(...)
  private Long number;
}

// Main Entity
@Entity
public class MyEntity {
  @Id
  private Long id;

  @OneToOne(...)
  private SurrogateEntity myVal;
}

Dengan pendekatan ini, nilai kerana harta myVal akan dijana oleh pangkalan data selepas membuat contoh MyEntity baharu. Penyelesaian ini membolehkan anda menggunakan keupayaan pengendalian nilai yang dijana pangkalan data Hibernate untuk lajur bukan ID.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Urutan Pangkalan Data untuk Lajur Bukan ID dalam JPA Hibernate?. 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