2013-10-17 3 views
5

मुझे पता है तुम से नाम से grails.gorm.default.constraints config संपत्ति के माध्यम से डिफ़ॉल्ट की कमी सेट कर सकते हैं:Grails GORM स्ट्रिंग्स के लिए डिफ़ॉल्ट अधिकतम लंबाई निर्धारित करना?

grails.gorm.default.constraints = { 
    '*'(nullable:true) 
} 

लेकिन वहाँ प्रकार के आधार पर यह निर्धारित करने के लिए एक तरीका है? मैं अपने सभी तारों को डिफ़ॉल्ट रूप से डिफ़ॉल्ट आकार में डिफ़ॉल्ट करना चाहता हूं: 2000 (मुख्य रूप से डिफ़ॉल्ट डीबी मैपिंग को वर्चर (255) नहीं होने के लिए मजबूर करना)

उत्तर

3

मुझे नहीं लगता कि Config.groovy में इसे आसानी से करने का कोई तरीका है। हालांकि आप बिना किसी परेशानी के हाइबरनेट के लिए एक कस्टम बोली बना सकते हैं। उदाहरण के लिए (Postgres बोली का उपयोग करते हुए):

package mypackage; 

import org.hibernate.dialect.PostgreSQLDialect; 
import java.sql.Types; 

public MyPostgresDialect extends PostgresSQLDialect { 
    public MyPostgresDialect() { 
     super(); 
     registerColumnType(Types.VARCHAR, "text"); 
    } 
} 

फिर DataSource.groovy अद्यतन नई बोली का उपयोग करें:

datasource { 
    ... 
    dialect = mypackage.MyPostgresDialect 
} 
+0

यह वास्तव में एक अच्छा विचार है - I उस पूरे दृष्टिकोण के बारे में सोचा नहीं था। मैंने सोचा है कि एक असीमित डेटाटाइप (उदा। स्ट्रिंग) को बहुत ही सीमित सीमित प्रकार (वर्कर (255)) में बाध्यकारी परेशानी के लिए एक व्यंजन है। बिल्ली - यह देखते हुए कि सभी आधुनिक डेटाबेस अब अंतरिक्ष पर बहुत अधिक स्मार्ट हैं (केवल वही उपयोग करें जो आवश्यक है) - मुझे आश्चर्य है कि वर्चर्स की सीमाएं भी हैं - एक बहुत ही उच्च मूल्य (जैसे 8k, 32k, आदि) की ऊपरी टोपी क्यों न करें, और कलात्मक रूप से इसे सीमित करने के लिए आवश्यक होने पर बाधाओं का उपयोग करें ... लेकिन यह सिर्फ मेरे घूमने वाले विचार हैं ... –

2

बस एक अतिरिक्त जवाब मैं एक सह कार्यकर्ता से प्राप्त प्रदान करने के लिए - जो नहीं था इस मामले में लागू हो, लेकिन दूसरों को मदद कर सकता है ...

अगर आप अपने गुणों में एक नामकरण परंपरा का पालन कर सकते, तो आप एक कर सकता है:

'*_s': (maxSize:2000) 

मुझे व्यक्तिगत रूप से क्रॉस-टाईंग प्रोप नाम और डेटाटाइप पसंद नहीं है - लेकिन इसे एक दृष्टिकोण के रूप में शामिल करना चाहता था (भले ही मुझे एटाइलर द्वारा बोली का जवाब पसंद है ...)

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