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

Bagaimanakah Saya Boleh Menjana Nilai Jujukan Pangkalan Data untuk Lajur Bukan ID dalam Hibernate?

Barbara Streisand
Barbara Streisandasal
2024-11-29 05:47:11393semak imbas

How Can I Generate Database Sequence Values for Non-ID Columns in Hibernate?

Jujukan Hibernate untuk Lajur Bukan ID

Menggunakan jujukan pangkalan data untuk menjana nilai bagi lajur bukan kunci utama dalam Hibernate ialah keperluan biasa. Malangnya, hibernate pada masa ini tidak menyediakan kaedah terbina dalam untuk mencapai ini.

Anotasi @GeneratedValue hanya boleh digunakan bersama-sama dengan @Id untuk menjana nilai secara automatik bagi kunci utama. Cabaran timbul kerana Hibernate menganggap bahawa sifat bukan ID harus dikendalikan oleh aplikasi pengguna.

Untuk mengatasi pengehadan ini, penyelesaian melibatkan penciptaan entiti berasingan dengan Id yang dijana secara automatik. Entiti ini kemudiannya bertanggungjawab untuk menjana nilai jujukan yang boleh diberikan kepada sifat bukan ID dalam entiti sasaran.

Pertimbangkan contoh berikut:

@Entity
public class GeneralSequenceNumber {
  @Id
  @GeneratedValue(...)
  private Long number;
}

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

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

Dalam senario ini, a contoh baharu GeneralSequenceNumber dicipta dan medan nombornya dijana secara automatik. Nilai ini kemudiannya diberikan kepada sifat myVal dalam MyEntity semasa kegigihan entiti.

Walaupun penyelesaian ini menambah entiti tambahan, ia menyediakan penyelesaian untuk mengurus jujukan sifat bukan ID dalam Hibernate. Sehingga pendekatan yang lebih lancar dilaksanakan, kaedah ini menawarkan penyelesaian praktikal untuk kes penggunaan biasa ini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Nilai Jujukan Pangkalan Data untuk Lajur Bukan ID dalam 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