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.