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

JOOQ Oracle नंबर सटीक और जावा नंबर मैपिंग

जावा के पूर्णांक प्रकार Oracle के NUMBER . के लिए एकदम सही मेल नहीं हैं प्रकार। अनिवार्य रूप से, दुनिया के बीच मानचित्रण करने के दो तरीके हैं, दोनों अपूर्ण:

  • यथास्थिति: NUMBER(3) . से बिल्कुल कम -> Byte .

    यह गारंटी देता है कि SQL मान हमेशा उसके जावा प्रकार में पढ़ा जा सकता है। कुछ जावा मान SQL प्रकार के लिए लिखने योग्य नहीं हो सकते हैं।

  • विकल्प: Byte -> NUMBER(3) या कम।

    यह गारंटी देगा कि जावा Byte मान हमेशा डेटाबेस में लिखा जा सकता है। हालांकि, कुछ डीबी मान जावा प्रकार में पढ़ने योग्य नहीं हो सकते हैं।

निम्नलिखित धारणाओं के कारण jOOQ पहले वाले को डिफॉल्ट करता है:

  • jOOQ का उपयोग अधिकतर "डेटाबेस पहले" API के रूप में किया जाता है
  • अधिकांश डेटा डीबी से पढ़ा जाता है, डीबी को नहीं लिखा जाता है

डिफ़ॉल्ट व्यवहार

jOOQ 3.8.4 में, निम्न तर्क को DefaultDataType.getNumericClass() :

// Integers
if (scale == 0 && precision != 0) {
    if (precision < BYTE_PRECISION) {
        return Byte.class;
    }
    if (precision < SHORT_PRECISION) {
        return Short.class;
    }
    if (precision < INTEGER_PRECISION) {
        return Integer.class;
    }
    if (precision < LONG_PRECISION) {
        return Long.class;
    }

    // Default integer number
    return BigInteger.class;
}

// Non-integers
else {
    return BigDecimal.class;
}

साथ:

int LONG_PRECISION    = String.valueOf(Long.MAX_VALUE).length();    // 19
int INTEGER_PRECISION = String.valueOf(Integer.MAX_VALUE).length(); // 10
int SHORT_PRECISION   = String.valueOf(Short.MAX_VALUE).length();   // 5
int BYTE_PRECISION    = String.valueOf(Byte.MAX_VALUE).length();    // 3

डिफ़ॉल्ट ओवरराइड करना

यदि कुछ मामलों में आप NUMBER(3) . का उपयोग करते हैं Byte स्टोर करने के लिए 127 . तक के नंबर उदाहरण के लिए, आप कोड जनरेशन चरण के दौरान डेटा प्रकार पुनर्लेखन निर्दिष्ट करके इस डिफ़ॉल्ट को ओवरराइड कर सकते हैं। यह यहाँ प्रलेखित है:

http://www.jooq.org/doc /नवीनतम/मैनुअल/कोड-जेनरेशन/डेटा-टाइप-रीराइट्स




  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. ओरेकल डेटाबेस सत्यापन जांच से आयात करना

  3. ऑरैकल में केवल समय कैसे दिखाना है?

  4. Oracle में एक SELECT क्वेरी से एक वैरिएबल घोषित करना और उसका मान सेट करना

  5. R12.2 में लॉगिन प्रवाह और मूल समस्या निवारण