Oracle 10 बोली
Oracle10gDialect . के लिए इस कॉन्फ़िगरेशन का उपयोग करें
@Id
@Column(name = "MY_PRIMARY_KEY")
@GeneratedValue(strategy=GenerationType.AUTO)
Long myPrimaryKey;
हाइबरनेट एक तालिका और अनुक्रम बनाता है:
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
इसे संग्रहीत करते समय पहले नया अनुक्रम आईडी प्राप्त होता है और इसे INSERT
. में पास करने के बाद बयान
select hibernate_sequence.nextval from dual
insert into MY_TABLE (VALUE, MY_PRIMARY_KEY) values (?, ?)
Oracle 12 बोली
यदि आप Oracle 12 . का उपयोग करते हैं जो मूल रूप से IDENTITY column
इसे Oracle12cDialect . में अपग्रेड करना पसंद किया जाता है (ध्यान दें कि इसके लिए हाइबरनेट 5.3 की आवश्यकता है)
strategy
सेट करें करने के लिए GenerationType.IDENTITY
@Id
@Column(name = "MY_PRIMARY_KEY", updatable = false, nullable = false)
@GeneratedValue(strategy=GenerationType.IDENTITY)
Long myPrimaryKey;
निम्न तालिका बनाई गई है - महत्वपूर्ण हिस्सा है generated as identity
जो अद्वितीय मूल्य प्रदान करता है। ध्यान दें कि कोई खोजकर्ता नहीं sequence
बनाने की आवश्यकता है, इसे आंतरिक रूप से प्रबंधित किया जाता है।
create table MY_TABLE (
MY_PRIMARY_KEY number(19,0) generated as identity,
VALUE varchar2(255 char),
primary key (MY_PRIMARY_KEY))
स्टोर करते समय INSERT में कोई आईडी पास नहीं की जाती है , इसे Oracle द्वारा नियत किया जाता है और सत्र में वापस कर दिया जाता है
insert into MY_TABLE (VALUE) values (?) RETURNING MY_PRIMARY_KEY INTO ?
ध्यान दें कि Oracle 10 के विपरीत आप डेटाबेस में एक राउंड ट्रिप सहेजते हैं।