2012-01-29 3 views
12

मेरे पास एक ऐसा एप्लिकेशन है जो Grails 1.3.7 का उपयोग कर रहा था जिसे मैंने अभी Grails 2.0 में माइग्रेट किया है। एप्लिकेशन स्वचालित dateCreated और lastUpdated फ़ील्ड का उपयोग करता है ताकि वस्तुओं के निर्माण और संशोधन के साथ जुड़े टाइमस्टैम्प का प्रबंधन किया जा सके। अपग्रेड करने के बाद, मुझे निम्न त्रुटि मिलती है:दिनांक तैयार किए गए, Grails 2.0 में अंतिम अद्यतन फ़ील्ड 2.

| Running Grails application 
| Error 2012-01-29 22:36:53,504 [Thread-8] ERROR util.JDBCExceptionReporter - ERROR: null value in column "date_created" violates not-null constraint 
| Error 2012-01-29 22:36:53,510 [Thread-8] ERROR events.PatchedDefaultFlushEventListener - Could not synchronize database state with session 

मेरे डोमेन क्लासेस में उपर्युक्त फ़ील्ड को टिप्पणी करने से समस्या दूर हो जाती है।

dateCreated और lastUpdated फ़ील्ड Grails 2.0 में बहिष्कृत किया गया है? यदि हां, तो क्या इसका मतलब यह है कि मुझे मैन्युअल रूप से इस कार्यक्षमता को संभालने के लिए कोड लिखना है या कोड को audit-trail प्लगइन जैसे किसी प्रकार की प्लगइन में ले जाया गया है?

उत्तर

17

ठीक है, मैन्युअल डोमेन वर्ग परिभाषा में autoTimestamp चर सेट करने के लिए "सही" से यह तय हो:

static mapping = { 
     autoTimestamp true 
} 

मैं इस संपत्ति है कि लगता है कि होगा Grails 1.3.7 से 2.0.0 तक एक प्रोजेक्ट माइग्रेट करने के बाद सेट नहीं है।

+0

आपको बहुत बहुत धन्यवाद! मैं एक मुद्दे में भाग गया क्योंकि grails 2.2.0 डोमेन वर्ग में स्थापित मूल्य को ओवरराइड कर रहा था। और अधिक खतरनाक बात यह है कि Grails द्वारा जोड़ा गया टाइमस्टैम्प सिस्टम घड़ी निर्भर है। – tusar

+0

मैंने ऑटोटाइमस्टैम्प प्रॉपर्टी को 'false' – tusar

+0

पर सेट करके स्वचालित ओवरराइडिंग तय की है यह एकीकरण टेस्ट में काम नहीं कर रहा है – codewandler

6

Grails 2.0 अभी भी स्वचालित टाइमस्टैम्प का समर्थन करता है। It's listed in the manual (scroll up a bit from this link)

हालांकि, यह विशेष रूप से उल्लेख है:

If you put nullable: false constraints on either dateCreated or lastUpdated , your domain instances will fail validation - probably not what you want. Leave constraints off these properties unless you have disabled automatic timestamping.

+0

आपके द्वारा पोस्ट किया गया लिंक http: // localhost/~ phil/पर जाता है। क्या आपने गलत लिंक डाला था? – srkiNZ84

+0

बाधाओं में से किसी भी फ़ील्ड का उल्लेख नहीं किया गया है। उद्धृत पाठ के आधार पर मुझे लगता है कि मैंने किसी भी तरह से "स्वचालित टाइमस्टैम्पिंग" अक्षम कर दिया है। आपको वह पाठ कहां से मिला? – srkiNZ84

+0

इसके बारे में क्षमा करें, मैं अपनी ऑफ़लाइन प्रति ब्राउज़ कर रहा था। लिंक तय किया गया है। चेतावनी संदेश मेरे द्वारा लिंक किए गए पृष्ठ पर है। आपको लिंक से *** यूपी *** स्क्रॉल करना होगा, क्योंकि मैं सीधे लिंक नहीं कर सकता। – OverZealous

3

Grails 2.0.3 में एक बग है जो पोस्टग्रेस का उपयोग करते समय इस समस्या का कारण बन सकती है। http://jira.grails.org/browse/GRAILS-8988 देखें। मुद्दा यह कहता है कि 2.0.4 जारी होने पर यह हल हो जाएगा।

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