Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

हाइबरनेट जेपीए - प्राथमिक कुंजी (अनुक्रम) पर बाधा उल्लंघन अपवाद

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 . में पास करने के बाद बयान

MY_TABLE (VALUE, MY_PRIMARY_KEY) मान (?,?) में
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 के विपरीत आप डेटाबेस में एक राउंड ट्रिप सहेजते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैच विशेषताओं को खोजने के लिए एसक्यूएल प्रश्न

  2. फिक्स एरर "ORA-01790:एक्सप्रेशन में संबंधित एक्सप्रेशन के समान डेटाटाइप होना चाहिए"

  3. Oracle PL/SQL HTTP अनुरोध प्रतिक्रिया एन्कोडिंग समस्या

  4. लाइन के लिए नियमित अभिव्यक्ति अलग-अलग लंबे शब्दों को अलग करती है

  5. SQL डेवलपर या टॉड के रूप में IDE टूल के साथ Oracle समानांतर क्वेरी व्यवहार