Dialek Oracle 10
Untuk Oracle10gDialect gunakan konfigurasi ini
@Id
@Column(name = "MY_PRIMARY_KEY")
@GeneratedValue(strategy=GenerationType.AUTO)
Long myPrimaryKey;
Hibernasi membuat tabel dan urutan:
create table MY_TABLE (
MY_PRIMARY_KEY number(19,0) not null,
VALUE varchar2(255 char),
primary key (MY_PRIMARY_KEY))
create sequence hibernate_sequence
Saat menyimpannya, pertama-tama dapatkan ID urutan baru dan kemudian meneruskannya di INSERT
pernyataan
select hibernate_sequence.nextval from dual
insert into MY_TABLE (VALUE, MY_PRIMARY_KEY) values (?, ?)
Dialek Oracle 12
Jika Anda menggunakan Oracle 12 yang secara native mendukung IDENTITY column
lebih disukai untuk meningkatkan ke Oracle12cDialect (perhatikan bahwa ini membutuhkan Hibernate 5.3)
Tetapkan strategy
ke GenerationType.IDENTITY
@Id
@Column(name = "MY_PRIMARY_KEY", updatable = false, nullable = false)
@GeneratedValue(strategy=GenerationType.IDENTITY)
Long myPrimaryKey;
Tabel berikut dibuat - bagian penting generated as identity
yang memberikan nilai unik. Perhatikan bahwa tidak ada sequence
yang eksplisit harus dibuat, itu dikelola secara internal .
create table MY_TABLE (
MY_PRIMARY_KEY number(19,0) generated as identity,
VALUE varchar2(255 char),
primary key (MY_PRIMARY_KEY))
Saat menyimpan tidak ada ID yang diteruskan di INSERT , ditugaskan oleh Oracle dan dikembalikan ke sesi
insert into MY_TABLE (VALUE) values (?) RETURNING MY_PRIMARY_KEY INTO ?
Perhatikan bahwa berbeda dengan Oracle 10 Anda menyimpan satu perjalanan pulang pergi ke database.