2014-08-28 8 views
6

के बाहर किया गया था इस त्रुटि पर पिछले प्रश्न हाइबरनेट संस्करण समस्या या परीक्षण चला रहे हैं। मुझे नहीं लगता कि यह मामला यहां है।कक्षा [] पर विधि का उपयोग Grails अनुप्रयोग

एक Grails सेवा कक्षा में मेरे पास है:

private static User anon = User.findByUsername('anonymous') 

और इस त्रुटि पैदा कर रही है:

Caused by IllegalStateException: Method on class [User] was used outside of a Grails application. If running in the context of a test using the mocking API or bootstrap Grails correctly. 

मैं एक वस्तु डेटाबेस में संग्रहीत के साथ एक निजी स्थिर विशेषता का दृष्टांत कोशिश कर रहा हूँ, लेकिन मुझे कुछ गलत करना होगा। किसी भी मदद, सुझाव और पॉइंटर्स के लिए धन्यवाद।

उत्तर

7

यह क्योंकि है कि कोशिश करते हैं और बात जब सेवा वर्ग भरी हुई है, जो कि पहले GrailsApplication आरंभीकरण प्रक्रिया पूरा हो गया है पर findByUsername कॉल कर देगा इस static बनाने के लिए काम नहीं करेगा,। सबसे पहले आप विश्वसनीय रूप से GORM विधियों को कॉल कर सकते हैं BootStrap समय पर, इसलिए मैं इस तरह की परिस्थितियों में क्या करना चाहता हूं सेवा पर प्रारंभिक विधि बना रहा है और फिर उस विधि को BootStrap इनिट क्लोजर से कॉल करें।

+0

आपके उत्तर के लिए धन्यवाद, इयान – malc

2

मुझे पता है कि यह पुराना है, लेकिन, आप किस प्रकार के grails का उपयोग कर रहे थे? मुझे grails 2.3 से grails 2.5 के प्रवासन के बाद एक ही समस्या थी।

कुछ बहुत दर्दनाक जांच के बाद मुझे पता चला है कि समस्या यह है कि जब नई कांटा मोड गुणों के साथ परीक्षण चल रहा है, और BuildConfig.groovy से इन विकल्पों को हटाने के द्वारा हल करने के लिए आसान है:

grails.project.fork = [ 
     // configure settings for compilation JVM, note that if you alter the Groovy version forked compilation is required 
     //compile: [maxMemory: 256, minMemory: 64, debug: false, maxPerm: 256, daemon:true], 

     // configure settings for the test-app JVM, uses the daemon by default 
     test: false, 
     // configure settings for the run-app JVM 
     run: [maxMemory: 1536, minMemory: 512, debug: false, maxPerm: 1024, forkReserve:false], 
     // configure settings for the run-war JVM 
     war: [maxMemory: 1536, minMemory: 512, debug: false, maxPerm: 1024, forkReserve:false], 
     // configure settings for the Console UI JVM 
     console: [maxMemory: 1536, minMemory: 64, debug: false, maxPerm: 1024] 
] 

सादर।

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