2011-01-04 8 views
7

का उपयोग करके अलग-अलग परिणाम कैसे प्राप्त करें I Grails में मानदंड का उपयोग करके अलग-अलग माता-पिता को लोड करने का प्रयास कर रहा हूं। क्वेरी निम्नलिखितअनुमान और मानदंड

क्वेरी प्रकार है:

def criteria = Parent.createCriteria(); 
     results = criteria.list(max:params.max, offset:params.offset){ 
      projections{ groupProperty('id') } 
      children{ 
       books{ 
        like('title',"%book") 
        } 
       } 
      order("id","asc") 
     } 

डोमेन वर्ग

class Parent { 

    String name 

    static hasMany = [children:Child] 

    static constraints = { 
    } 
} 


class Child { 

     String name 
     Parent parent 

     static belongsTo = [parent:Parent] 
     static hasMany = [books:Book] 
     static constraints = { 
     } 
    } 


class Book { 

     String title 
     Child child 

     static belongsTo = [child:Child] 
     static constraints = { 
     } 
    } 

प्रश्न: मैं अलग जनक पंक्तियाँ प्राप्त करने में असमर्थ हूँ।

अन्य अपनाया दृष्टिकोण और उनके परिणाम: मैं जानता हूँ कि क्यों groupProperty काम नहीं कर रहा donot। मैंने समूहप्रॉपर्टी के बजाय अनुमानों में अलग-अलग प्रयास किए हैं और यह भी उपयोगी नहीं है! अगर मैं criteria.listDistinct बजाय criteria.list का उपयोग तो मैं अलग जनक पंक्तियाँ प्राप्त करने में सक्षम हूँ, लेकिन पहले दृष्टिकोण पृष्ठांकन के लिए अतिरिक्त क्वेरी से TOTALCOUNT प्राप्त करने के लिए आवश्यकता होती है। इसलिए मैं अग्रिम

+0

आपका अंतिम लक्ष्य क्या है? क्या आप उन माता-पिता की एक सूची प्राप्त करने की कोशिश कर रहे हैं जिनके पास ऐसे बच्चे हैं जिनके पास एक विशिष्ट शीर्षक से मेल खाने वाली पुस्तकें हैं? – Pat

+0

असल में मैं सभी माता-पिता को अनूठा करना चाहता हूं, अद्वितीय, जिनके पास किताबें हैं जिनमें '% एम%' शीर्षक है। और समस्या समूहप्रोपर्टी है। परिणामों में अलग-अलग माता-पिता नहीं होते हैं। यदि यह क्वेरी को समझना मुश्किल है उसके बाद निम्न "बच्चों { बच्चों { ('नाम', जैसे" पऊ% ") } } आदेश (" आईडी "," एएससी ") – Rehman

+0

रिश्तों के साथ ऊपर उल्लिखित क्वेरी बराबर की जगह: अभिभावक: चाइल्ड [1: एन] और चाइल्ड: बुक [1: एन] – Rehman

उत्तर

3

में criteria.list का उपयोग कर

धन्यवाद आप criteria.listDistinct साथ के रूप में एक ही प्रभाव प्राप्त कर सकते हैं अलग जनक पंक्तियाँ प्राप्त करने में अत्यधिक intersted हूँ अगर आप को बदलने के मापदंड क्वेरी की तरह अलग जड़ इकाई परिणाम ट्रांसफार्मर शामिल करने के लिए इस:

results = criteria.list(max:params.max, offset:params.offset){ 
     children{ 
      books{ 
       like('title',"%book") 
       } 
      } 
     resultTransformer Criteria.DISTINCT_ROOT_ENTITY    
     order("id","asc") 
    } 

लेकिन वहाँ एक कारण है कि grails पृष्ठांकित परिणाम वापस नहीं करता है listDistinct कॉल के लिए तो यह in ऑपरेटर के साथ एक HQL क्वेरी का सहारा लेना एक मामला हो सकता है

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