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

हाइबरनेट के साथ ऑटो इंक्रीमेंटेड कंपोजिट आईडी सीक्वेंस की मैपिंग में व्यवहार की व्याख्या करें

चूंकि id फ़ील्ड पहले से ही अद्वितीय है और स्वतः वृद्धि हुई है, इस मामले में आपको एक समग्र आईडी की आवश्यकता नहीं है ताकि आपकी इकाई इस तरह दिख सके:

@Id
@Column(name = "id")
public long getId() {
    return id;
}

@Column(name = "subid")
public int getSubid() {
    return subid;
}

इकाई प्रबंधक का उपयोग करके आईडी द्वारा इकाई प्राप्त की जा सकती है:

entityManager.find(MyEntity.class, entityId); 

या आप एक क्वेरी का उपयोग करके इकाई प्राप्त कर सकते हैं जो id . दोनों लेती है और subid :

MyEntity myEntity = entityManager.createTypeQuery("select me from MyEntity where id = :id and subid = :subid", MyEntity.class)
    .setParameter("id", entityId) 
    .setParameter("subid", entitySubId) 
    .getSingleResult();

हाइबरनेट में एक SelectGenerator भी है। जो डेटाबेस कॉलम से आईडी प्राप्त कर सकता है, जो तब उपयोगी होता है जब डेटाबेस ट्रिगर का उपयोग करके आईडी उत्पन्न करता है।

दुर्भाग्य से, यह समग्र आईडी के साथ काम नहीं करता है, इसलिए आपने अपना खुद का विस्तारित SelectGenerator लिखा है या एक स्ट्रिंग का उपयोग करें id_sub_id कॉलम जो आईडी और उप-आईडी को एक एकल VARCHAR कॉलम में जोड़ता है:

'1-0'
'1-1'
'2-0'
'2-1' 

आपको डेटाबेस विशिष्ट संग्रहीत कार्यविधि का उपयोग करके दो स्तंभों को अद्यतन करने के लिए एक डेटाबेस ट्रिगर लिखना होगा और दो स्तंभों को VARCHAR एक में एकत्रित करना होगा। फिर आप मानक SelectGenerator . का उपयोग करके समेकित कॉलम को मैप करते हैं एक स्ट्रिंग फ़ील्ड के लिए:

@Id
@Column(name = "id_sub_id")
@GeneratedValue( strategy = "trigger" )
@GenericGenerator( 
    name="trigger", strategy="org.hibernate.id.SelectGenerator",
    parameters = {
        @Parameter( name="keys", value="id_sub_id" )
    }
)
public String getId() {
    return id;
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL त्रुटि 1093 के आसपास हो रही है

  2. एकाधिक सर्वरों में मैसकल को कैसे विभाजित करें?

  3. MySQL कनेक्शन स्ट्रिंग में पूलिंग =गलत का क्या अर्थ है?

  4. सर्वलेट में mysql के लिए खोज कोड?

  5. PHPMyAdmin में फ़ाइल आकार सीमा आयात करें