के साथ बिगडिसीमल सटीक नहीं रहा है, मैं जवाक्स.पर्सिस्टेंस एपीआई और हाइबरनेट का उपयोग एनोटेशन बनाने और ओरेकल 11 जी एक्सप्रेस डेटाबेस में एंटीटीज और उनके गुणों को बनाए रखने के लिए कर रहा हूं।जेपीए एनोटेशन
मैं एक इकाई में निम्न विशेषता है:
@Column(precision = 12, scale = 9)
private BigDecimal weightedScore;
लक्ष्य 12 अंक की एक अधिकतम और दशमलव स्थान के अधिकार के लिए उन अंकों के 9 की एक अधिकतम के साथ एक दशमलव मान लागू करने के लिए है।
weightedScore
की गणना करने के बाद, परिणाम 0.1234 है, लेकिन एक बार जब मैं ओरेकल डेटाबेस के साथ इकाई करता हूं, तो मान 0.12 के रूप में प्रदर्शित होता है।
मैं इसे एंटिटी मैनेजर ऑब्जेक्ट का उपयोग करके प्रविष्टि से पूछने के लिए या इसे सीधे वेब ब्राउज़र में ओरेकल एप्लिकेशन एक्सप्रेस (एपेक्स) इंटरफ़ेस में देखकर देख सकता हूं।
मुझे अपने BigDecimal विशेषता को कैसे एनोटेट करना चाहिए ताकि सटीकता सही ढंग से बनी रहे?
नोट: हम अपने यूनिट परीक्षण चलाने के लिए एक इन-मेमोरी एचएसक्यूएल डेटाबेस का उपयोग करते हैं, और @Column
एनोटेशन के साथ या बिना परिशुद्धता की कमी के साथ समस्या का अनुभव नहीं होता है।
अद्यतन:
तालिका वर्णन को देखते हुए, weightedScore
स्तंभ की परिभाषा NUMBER(19, 2)
है। मैंने अब एनोटेशन को @Column(columnDefinition="Number(12, 9)")
में बदलने की कोशिश की है, लेकिन इसका कोई प्रभाव नहीं पड़ा है। क्या किसी को पता है कि ओरेकल इन एनोटेशन के लिए उत्तरदायी क्यों नहीं है?
बग-रिपोर्ट में यह भी कहा गया है कि बग केवल 9,223,372,036,854,775,808 से बड़े मानों पर लागू होता है और यह _fixed_ है। – Ben