Grails में, क्या कॉलम के आकार को सीमित करने का कोई तरीका है जिस पर enum मैप किया गया है। निम्न उदाहरण में, मैं स्तंभ प्रकार चाहते हैं होने के लिए चार (2)Grails Enum मैपिंग
enum FooStatus {
BAR('br'), TAR('tr')
final static String id
}
class Foo {
FooStatus status
static constraints = {
status(inList:FooStatus.values()*.id,size:2..2)
}
}
दोनों inList और आकार कोई असर जब स्कीमा निर्यात की जरूरत नहीं है, स्तंभ प्रकार उसके डिफ़ॉल्ट मान रखता है (varch (255)) शायद मैं ऐसा कर सकता हूं अगर मैं एक नया उपयोगकर्ता टाइप परिभाषित करता हूं। कोई उपाय ?
आप -ken
यह काफी कष्टप्रद मैं हर enum के लिए जोड़ने के लिए एक गेटर और एक सेटर टाइप करें और इसे "क्षणिक" यह घोषणा की है कि है। बर्ट, कस्टम यूजर टाइप एक और सुरुचिपूर्ण समाधान नहीं होगा? – ken
क्षणिक और गेटर/सेटर वैकल्पिक हैं यदि आप Enum की आईडी सेट करने और कॉलिंग कोड में आईडी को एनम उदाहरण में परिवर्तित करने के ठीक हैं। असली परिवर्तन Enum की बजाय एक स्ट्रिंग को जारी रख रहा है (जो कि आपके लिस्ट() के उपयोग से निहित था, क्योंकि इससे एन्म के साथ काम नहीं करेगा)। लेकिन निश्चित रूप से, एक कस्टम उपयोगकर्ता टाइप काम करना चाहिए। यदि आप इसे एक से अधिक बार करते हैं तो आप सामान्य सामान को बेस क्लास में निकालना चाहते हैं। मेरी वरीयता डोमेन वर्ग में सबकुछ रखना संभव होगा, जब तक कि परिवर्तन महत्वपूर्ण न हों। –
बर्ट, हाँ आप सही हैं, मैं एक एनम के रूप में स्थिति चर सेट करने और प्राप्त करने में सक्षम होना चाहता हूं और इस प्रकार डेटाबेस को सहेजने में भी सक्षम हूं, इस प्रकार एनम में आईडी का उपयोग। मैं मैपिंग = {स्थिति प्रकार: EnumUserType} – ken