Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Hibernasi, id, oracle, urutan

Saya juga punya proyek di mana Oracle DB yang menyediakan data ke kelas @Entity saya. Seperti yang Anda katakan, urutan menghasilkan id untuk PK tabel melalui pemicu. Ini adalah anotasi yang saya gunakan di salah satu kelas ini:

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "G1")
@SequenceGenerator(name = "G1", sequenceName = "LOG_SEQ")
@Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0)
public int getId() {
    return this.id;
}

Ini adalah sintaks kedua yang Anda tunjukkan di posting Anda. Tidak ada panggilan ke pemicu dalam kode Java karena pemicu dikelola oleh DB. Saya ingat bahwa saya harus memiliki urutan dan pemicu pada saat yang sama di DB jika saya tidak ingin memiliki masalah. Pemicu menanyakan apakah id baris yang akan disisipkan adalah null atau =0. Dalam hal ini, urutan LOG_SEQ dipanggil.

Jadi, jika Anda memberikan nilai ke @Id entitas Anda, itu bisa dimasukkan ke dalam DB (jika Id itu tidak ada) dan urutannya tidak akan dipanggil. Coba lihat kode pemicu untuk melihat apa yang sebenarnya terjadi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PL/SQL - tip untuk output langsung/pencetakan konsol

  2. Sisipan/Pembaruan Batch MyBatis Untuk Oracle

  3. Cara tercepat untuk memeriksa apakah beberapa catatan dalam tabel database?

  4. Mendeteksi Apakah Nilai Berisi Setidaknya Satu Digit Numerik di Oracle

  5. Oracle ODP.Net dan EF CodeFirst - Kesalahan SaveChanges