2011-09-11 13 views
6

के साथ परेशानी हो रही है, मैं एक lib का उपयोग कर रहा हूं जिसमें इन्हें कॉन्स के साथ एक enum प्रकार है;ओरिएंट डीबी को यूनिकोड, तुर्की और enums

Type.SHORT 
Type.LONG 
Type.FLOAT 
Type.STRING 

मैं ग्रहण में डीबगिंग रहा है, मैं एक त्रुटि मिली:

No enum const class Type.STRİNG 

मैं एक तुर्की प्रणाली का उपयोग कर रहा हैं, वहाँ मैं काम कर रहा पर एक समस्या है> मैं लेकिन यह एक enum स्थिरांक है के रूप में , भले ही मैंने प्रत्येक विशेषता को यूटीएफ -8 के रूप में रखा हो, फिर भी STRING कुछ भी प्राप्त नहीं हो सकता है जो ग्रहण को देखना चाहिए। लेकिन यह अभी भी STRİNG देखता है और यह नहीं मिल रहा है और मैं इसका उपयोग नहीं कर सकता। इसके लिए मुझे क्या करना चाहिए?

प्रोजेक्ट> गुण> Resouce> टेक्स्ट फ़ाइल एन्कोडिंग अब यूटीएफ -8 है। समस्या रखती है

संपादित करें: अधिक जानकारी कुछ संकेत दे सकती है जो मुझे नहीं मिल सकती हैं; मैं ओरिएंट डीबी पर काम कर रहा हूं। यह मेरा पहला प्रयास है, इसलिए मुझे नहीं पता कि ओरिएंट डीबी पैकेज पर समस्या हो सकती है या नहीं। लेकिन मैं कई अन्य libs का उपयोग कर रहा हूँ, मैंने कभी ऐसी समस्या नहीं देखी है। इस पैकेज में एक ओटीपी enum है, और मैं केवल डेटाबेस से कनेक्ट करने की कोशिश कर रहा हूँ।

String url = "local:database"; 
    ODatabaseObjectTx db = new ODatabaseObjectTx(url). 
    Person person = new Person("John"); 
    db.save(person); 
    db.close(); 

अब तक कोई और कोड नहीं है जिसका उपयोग मैं अभी तक करता हूं। डाटाबेस बनाया है, लेकिन फिर मैं मिल java.lang.IllegalArgumentException:

Caused by: java.lang.IllegalArgumentException: No enum const class com.orientechnologies.orient.core.metadata.schema.OType.STRİNG 
    at java.lang.Enum.valueOf(Unknown Source) 
    at com.orientechnologies.orient.core.metadata.schema.OType.valueOf(OType.java:41) 
    at com.orientechnologies.orient.core.sql.OCommandExecutorSQLCreateProperty.parse(OCommandExecutorSQLCreateProperty.java:81) 
    at com.orientechnologies.orient.core.sql.OCommandExecutorSQLCreateProperty.parse(OCommandExecutorSQLCreateProperty.java:35) 
    at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.parse(OCommandExecutorSQLDelegate.java:43) 
    at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.parse(OCommandExecutorSQLDelegate.java:28) 
    at com.orientechnologies.orient.core.storage.OStorageEmbedded.command(OStorageEmbedded.java:63) 
    at com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:63) 
    at com.orientechnologies.orient.core.metadata.schema.OClassImpl.addProperty(OClassImpl.java:342) 
    at com.orientechnologies.orient.core.metadata.schema.OClassImpl.createProperty(OClassImpl.java:258) 
    at com.orientechnologies.orient.core.metadata.security.OSecurityShared.create(OSecurityShared.java:177) 
    at com.orientechnologies.orient.core.metadata.security.OSecurityProxy.create(OSecurityProxy.java:37) 
    at com.orientechnologies.orient.core.metadata.OMetadata.create(OMetadata.java:70) 
    at com.orientechnologies.orient.core.db.record.ODatabaseRecordAbstract.create(ODatabaseRecordAbstract.java:142) 
    ... 4 more 

यहाँ OType वर्ग है: http://code.google.com/p/orient/source/browse/trunk/core/src/main/java/com/orientechnologies/orient/core/metadata/schema/OType.java

और अन्य वर्ग; OCommandExecutorSQLCreateProperty: http://code.google.com/p/orient/source/browse/trunk/core/src/main/java/com/orientechnologies/orient/core/sql/OCommandExecutorSQLCreateProperty.java

लाइन 81 का कहना है: type = OType.valueOf(word.toString());

+0

जब आप 'Type.STR' टाइप करने के बाद 'CTRL + Space' दबाते हैं तो Eclipse स्वत: पूर्ण correclty करता है? –

+0

दरअसल मैं सीधे टाइप करके इसका उपयोग नहीं करता हूं। प्रतिबिंब या कुछ ऐसा उपयोग करने वाला कुछ होना चाहिए। लेकिन आपके प्रश्न के उत्तर के रूप में, टाइप करके, कोई समस्या नहीं है। Ctrl + Space मुझे Type.STRING (सही, बिना समस्या के) देता है –

+0

शायद कोड के साथ कोई समस्या है जो प्रतिबिंबित रूप से enum कहलाती है - वह मान कहां से आता है? उपयोगकर्ता इनपुट फॉर्म तुर्की-केवल कीबोर्ड, या कोई अन्य सिस्टम जो 'I' के बजाय' İ' भेजता है? –

उत्तर

6

क्या मुझे यह मानने में सही लगता है कि आप तुर्की लोकेल का उपयोग करके इस कार्यक्रम को चला रहे हैं?तब ऐसा लगता है बग लाइन OCommandExecutorSQLCreateProperty की 118 में है:

linkedType = OType.valueOf(linked.toUpperCase()); 

आप लोकेल जिसका ऊपरी आवरण नियम इस्तेमाल किया जाना चाहिए, शायद toUpperCase को पैरामीटर के रूप में Locale.ENGLISH निर्दिष्ट करने के लिए होगा।

+0

आपको बहुत बहुत धन्यवाद। मुझे लगता है कि अब के लिए सबसे उचित जवाब तुम्हारा है। लेकिन मैं यह कैसे करूँगा? मैं केवल इस पुस्तकालय का उपयोग कर रहा हूं और यह केवल इस पुस्तकालय में क्यों हो रहा है? –

+0

मुझे समस्या मिली, न कि आपके द्वारा इंगित लाइन पर, लेकिन बहुत समान। OCommandExecuterSQLAbstract लाइन 40 में "toUpperCase()" विधि है। यह मुझे STRİNG देता है जो तुर्की लोकेल देना चाहता है। मैं Locale.setLocale (Locale.ENGLISH) के रूप में अपना लोकेल बदलता हूं, यह अच्छी तरह से काम करता है। लेकिन एक समस्या है; अगर मुझे तुर्की डेटा के साथ काम करने की ज़रूरत है, और यदि मेरे पास तुर्की लोकेल नहीं है, तो यह एक और समस्या होगी। मैं OrientDB को अपने कोड को अपपरकेस (Locale.ENGLISH) के रूप में बदलकर इसे ठीक करने का सुझाव देता हूं; हम देखेंगे कि क्या होता है :) बहुत बहुत धन्यवाद –

+0

मैंने इस समाधान का उपयोग किया है और ओरिएंट डीबी एसवीएन आर 3818 के रूप में किया है। मैंने .toUpperCase() SQL ऑपरेटर छोड़ा है क्योंकि यह सही है कि तुर्की टेक्स्ट के साथ काम करने के लिए लोकेल सेटिंग्स का उपयोग करें। एलवीसी @ – Lvca

0

एक काम के आसपास Type.ST टाइप करने के लिए और फिर Ctrl-space दबाते है। ग्रहण कुंजीपटल पर एक डॉटलेस कैपिटल I दर्ज करने के तरीके के बिना ग्रहण को वैरिएबल नाम स्वतः पूर्ण करना चाहिए। :)

+0

उस पर कोई समस्या नहीं है। बस कुछ कहें, और ग्रहण गलत तरीके से हो जाता है। –

1

यह समस्या आपके डेटाबेस कनेक्शन से संबंधित है। संभवतः, ओरिएंट डीबी में कहीं एक स्ट्रिंग है, और आप इसे पढ़ रहे हैं, और फिर enum के सदस्य का चयन करने के लिए इसका उपयोग करने का प्रयास कर रहे हैं।

मैं आपके द्वारा पोस्ट किए गए कोड में मान रहा हूं कि परिवर्तनीय word डेटाबेस में डेटा से आता है। अगर यह कहीं और से आता है, तो समस्या 'कहीं और' है। यदि ओरिएंट डीबी, कुछ अजीब कारणों से, आपको कुछ प्रकार के बताने के लिए मेटाडेटा के रूप में 'STRİNG' लौटाता है, तो यह वास्तव में ओरिएंट डीबी में एक दोष है।

यदि उस स्ट्रिंग में वास्तव में İ है, तो परिणाम पर कोई ग्रहण सेटिंग का कोई प्रभाव नहीं पड़ेगा। आप सामान्य मैं मैं

करने के लिए कोड लिखने के लिए आपको स्ट्रिंग के char रों स मान के अनुक्रम के रूप में 'शब्द' की सामग्री को बाहर डंप तो होगा, मुझे लगता है कि आप अपने मैं देख लेंगे आप पर सही लग रहा है। आपको एक सादा पुराना होने के लिए डीबी में क्या बदलना है I

+0

धन्यवाद। खैर, वास्तव में ऐसा होता है कि डेटाबेस पर कोई डेटा नहीं है। डेटाबेस अप निर्माण के दौरान यह अपवाद फेंक दिया गया है, मैं कुछ भी नहीं डालता हूं। तो मुझे ओरिएंट डीबी कक्षाओं की समस्या पर और सोचना चाहिए? –

+1

ऐसा लगता है कि समस्या OrientDB मेटाडेटा में है। समर्थित डेटा प्रकारों में से एक 'स्ट्रिंग' है? क्या आप ओरिएंट डीबी या उसके ड्राइवर का तुर्की संस्करण उपयोग कर रहे हैं? क्यूए के माध्यम से इस बुनियादी फिसलने की कल्पना करना मुश्किल है, लेकिन जब तक आप मेटाडेटा (संभवतः एक मैपिंग फ़ाइल?) का प्रबंधन नहीं कर रहे हैं, जहां मैं देखता हूं। – TMN

+0

मैं किसी भी तुर्की संस्करण का उपयोग नहीं कर रहा हूँ। केवल मेरा ओएस (विंडोज 7) तुर्की है (और शायद जेवीएम तुर्की के रूप में डिफ़ॉल्ट लोकेल हो जाता है) लेकिन मैं किसी भी ग्रहण प्लगइन या किसी भी पैकेज/पुस्तकालयों, ओरिएंट डीबी और उसके ड्राइवर के तुर्की संस्करण का उपयोग नहीं करता हूं। मुझे लगता है कि समर्थन के रूप में स्ट्रिंग डेटाटाइप के बारे में कोई समस्या नहीं है।और, मैं मेटाडेटा/मैपिंग का प्रबंधन नहीं कर रहा हूं, मैं केवल शुरुआत में हूं :) –

1

दुर्भाग्य से, यह क्षेत्रीय सेटिंग से संबंधित है, जो आपके ओएस का लोकेल है जो तुर्की है। एक ही मुद्दे के लिए

1. Change your regional settings to English-US 

2. Give encoding to she jvm as command line param for setting locale to English 

    -Duser.language=en -Duser.region=EN 

मैं xmlbeans के लिए बग रिपोर्ट बनाई है, मौजूद हैं और अपाचे CXF:

दो विकल्प के आसपास काम करते हैं। अपवाद का अपवाद अपवाद का बिंदु है।

कुछ संबंधित लिंक:

https://issues.apache.org/jira/browse/XMLSCHEMA-22

http://mail-archives.apache.org/mod_mbox/xmlbeans-user/201001.mbox/%[email protected]%3E

http://mail-archives.apache.org/mod_mbox/cxf-users/201203.mbox/%[email protected]%3E

https://vaadin.com/forum/-/message_boards/view_message/793105

http://comments.gmane.org/gmane.comp.apache.cxf.user/18316

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