jpa - Hibernate @Enumerated mapping -


हाइबरनेट @ नामांकित एनोटेशन प्रदान करता है जो दो प्रकार के Enum मैपिंग का समर्थन करता है या तो ORDINAL या STRING का उपयोग कर रहा है। जब हम EnumType.STRING का इस्तेमाल करते हैं, तो यह Enum के "नाम" को लेता है और toString () Enum का प्रतिनिधित्व नहीं करता है। परिदृश्यों में यह एक समस्या है जहां डेटाबेस कॉलम में केवल एक वर्ण शामिल होता है। उदाहरण के लिए, मेरे पास निम्न Enum है:

  सार्वजनिक enum status {OPEN {@Override सार्वजनिक स्ट्रिंग toString () {return "O";}}, WAITLIST {@Override सार्वजनिक स्ट्रिंग toString () {Return "W";}}, COMPLETE {@Override सार्वजनिक स्ट्रिंग toString () {return "C";}}}   

जब मैं enum status.OPEN < / Code> का उपयोग करके @Enumerated (EnumType.STRING) , मान है कि हाइबरनेट डाटाबेस में स्टोर करने की कोशिश करता है OPEN। हालांकि, मेरे डेटाबेस कॉलम में केवल एक अक्षर होता है और इसलिए यह एक अपवाद फेंकता है।

इस मुद्दे पर काबू पाने का एक तरीका ऐन्युम प्रकार को एकल वर्ण (जैसे STATUS.O , STATUS.W के बजाय STATUS.OPEN , STATUS.WAITLIST )। हालांकि, यह पठनीयता कम कर देता है पठनीयता को बनाए रखने के लिए कोई भी सुझाव ऐनम को एक एकल वर्ण स्तंभ में मैप करने के साथ-साथ

धन्यवाद।

इन दो लेखों की जांच करें - और

वे एक कस्टम यूज़रटाइप द्वारा समस्या का समाधान करते हैं।

Comments

Popular posts from this blog

qt - switch/case statement in C++ with a QString type -

python - sqlite3.OperationalError: near "REFERENCES": syntax error - foreign key creating -

Python's equivalent for Ruby's define_method? -