2010-10-29 13 views
5

मैं एक मानदंड निर्माता बनाने का प्रयास कर रहा हूं जिसमें संबंध है और अभी तक सफल नहीं हुआ है।grails नहीं बना सकता है मानदंड क्वेरी जिसमें संबंधित है

class Msg { 
    ... 
    static belongsTo = [user: User] 
    ... 
} 

class User { 
    ... 
    Organisation organisation 
    ... 
} 

मैं निम्न क्वेरी बनाने के लिए कोशिश कर रहा हूँ:

Msg.createCriteria().list() { 
    ... 
    user { 
     eq("organisation", organisationInstance) 
    } 
    ... 
} 

सभी मैं हो रही है निम्न त्रुटि

ERROR errors.GrailsExceptionResolver - No signature of method: static User.call() is applicable for argument types: (MsgService$_findMessages_closure1_closure6) values: [[email protected]] 
Possible solutions: save(), wait(), any(), getAll(), save(java.lang.Boolean), save(java.util.Map) 

मैं करने की कोशिश की है निम्नलिखित मॉडल पर विचार करें मानदंड क्वेरी में विभिन्न छोटे जोड़ों को जोड़ें:

join "user" 
fetchMode("user", org.hibernate.FetchMode.EAGER) 

लेकिन फिर भी वही समस्या मिलती है।

मैं भी संदेश वर्ग के लिए निम्न स्थिर मानचित्रण जोड़ने की कोशिश की:

static mapping = { 
    columns { 
     user lazy: false 
    } 
} 

फिर भी काम नहीं कर रहा।

क्या कोई वर्चुअल बिल्डर युक्त मानदंड निर्माता का उपयोग करने का कोई तरीका है?

अग्रिम में आपकी सहायता के लिए धन्यवाद।
लुसियन

उत्तर

5

मैं समाधान मिल गया है! समस्या मानदंड निर्माता से बिल्कुल संबंधित नहीं थी। इस उदाहरण में, मेरे पास दायरे के अंदर एक उपयोगकर्ता चर था। एक बार हटा दिए जाने पर यह एक आकर्षण की तरह काम करता है :-)

+0

यह लंबे समय तक मेरे सिर को टक्कर देने में मदद करता है। त्रुटि ने इस मुद्दे के बारे में किसी भी प्रकार का सुराग नहीं दिया है। साझा करने के लिए धन्यवाद –

2
def criteria = Msg.createCriteria() 
results = criteria.list{ 
    user{ 
     eq("organisation", organisationInstance) 
    } 
} 
+0

ऊपर दिए गए उदाहरण से क्या अंतर है? –

+0

आपका क्रिएटिया स्टेटमेंट गलत दिखता है, गायब है "()" –

+0

क्षमा करें, मैंने गलत वर्तनी की है .. इसमें निश्चित रूप से "()" होना चाहिए। ठीक करना। –

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