2012-08-03 11 views
5

मुझे एक ऐसी परियोजना मिली है जो किसी भी SQL डेटाबेस में ऑब्जेक्ट्स को जारी रखने के लिए एक्लिप्ससेंक जेपीए का उपयोग करती है। वर्तमान में यह स्थानीय डर्बी डीबी वितरण के साथ आता है। कुछ परीक्षण के दौरान मुझे पता चला कि इस कार्यक्रम के निम्न अपवाद फेंक देगा:EclipseLink जेपीए का उपयोग 255 वर्णों से बड़े स्ट्रिंग्स को बांधने के लिए

012-08-03 10: 21: 11.357 - UnitOfWork (32,349,505) - अपवाद [EclipseLink-4002] (ग्रहण हठ सेवाएं - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException आंतरिक अपवाद: java.sql.SQLDataException: एक छंटनी त्रुटि VARCHAR 'कुछ जरूरी वास्तव में लंबे पाठ' को 255 तक सीमित करने की कोशिश करने का सामना करना पड़ा त्रुटि कोड: 20000

स्पष्ट रूप से VARCHAR स्ट्रिंग्स को बड़े पैमाने पर स्टोर करने के लिए उपयुक्त नहीं है (आमतौर पर) 255 वर्णों से भी कम है, फिर भी मुझे कोड खंड नहीं मिला जहां ऑब्जेक्ट वैरिएबल स्पष्ट रूप से VARCHAR फ़ील्ड को असाइन किया गया है। मैं समझता हूं कि जेपीए या ग्रहण लिंक स्वचालित रूप से आपके लिए यह असाइन करता है, इसलिए मेरा प्रश्न, जहां मुझे अभी तक एक सरल उत्तर नहीं मिला, यह है:

मैं कैसे सुनिश्चित कर सकता हूं कि ग्रहण लिंक/जेपीए 255 वर्णों से बड़े स्ट्रिंग्स को स्टोर करता है?

चीयर्स

उत्तर

9

आप तो यह Clob के रूप में कायम हो जाता है संपत्ति टिप्पणी करने की जरूरत है। @Lob का उपयोग करें; String के लिए यह Clob पर डिफ़ॉल्ट होगा। प्रलेखन के लिए here देखें। बेशक आपको यह सुनिश्चित करना होगा कि डेटाबेस कॉलम प्रकार सही है (यानी VARCHAR) यदि आप मैन्युअल रूप से डेटाबेस बनाते हैं।

+0

यह चाल है। धन्यवाद! –

1

मैं आपको डेटा प्रकार दिखाता हूं जो स्ट्रिंग को 255 वर्णों से बड़ा बांधने के लिए दिखाता है। यह देखो;

जावा प्रकार - बाइट [], java.lang.Byte [], java.sql.Clob

जावा डीबी, डर्बी, Cloudscape - CLOB (64000)

ओरेकल - लंबी

डीबी 2 - CLOB (64000)

Sybase - पाठ

MSSQL - पाठ

MySQL - टेक्स्ट (64000)

1

कई परिवेशों में @ कॉलम प्रकार के कॉलिंग की सीमा 255 से अधिक है, उदाहरण के लिए 4kB। आप डिफ़ॉल्ट 255

@Column (लंबाई = 1024)

स्ट्रिंग नमूना बदलने के लिए 'लंबाई' का उपयोग की जरूरत है;

संबंधित मुद्दे