2010-07-09 13 views
7

मान लीजिए मैं निम्नलिखित डोमेन वर्ग:क्वेरी सबसेट

class Book { 
    String title 
    String author 
    byte[] largeCoverArtImage 
} 

मैं एक सूची दृश्य largeCoverArtImage प्रदर्शित करने के लिए मैं कहाँ की आवश्यकता नहीं है, मैं कैसे GORM मानदंड का उपयोग कर निम्न SQL क्वेरी प्रदर्शन कर सकते हैं?

select title, author from Book 

उत्तर

7

आप HQL क्वेरी, जिन्होंने executeQuery साथ अलग-अलग स्तंभों का चयन चला सकते हैं:

def titlesAndAuthors = Book.executeQuery('select title, author from Book') 

यह वस्तु [], उदा की एक सूची वापस आ जाएगी

for (row in titlesAndAuthors) { 
    String title = row[0] 
    String author = row[1] 
    ... 
} 
+0

उत्तर का उत्तर नहीं था, क्योंकि मैं executeQuery के साथ मानक मानदंड अंकन पैटर्न का उपयोग नहीं कर सकता। लेकिन स्वीकृत उत्तर के रूप में चिह्नित (यानी "नहीं")। मैं इंगित करूंगा कि एक समाधान जो क्रिटिएरा के साथ काम करता है, विशेष रूप से सूची पृष्ठ के लिए एक डीबी व्यू और अलग डोमेन क्लास (लीगेसी डीबी मानते हुए) बनाना है (जिससे आसानी से मानदंड पेजिनेशन पैटर्न का लाभ उठाता है)। बेशक, नकारात्मकता यह है कि आपके पास दो असंगत वर्ग हैं जो अनिवार्य रूप से रिकॉर्ड के एक ही सेट का प्रतिनिधित्व करते हैं। –

7

Grails (1.3.7 संस्करण के साथ परीक्षण) में आप लिख सकते हैं:

def titlesAndAuthors = Book.withCriteria { 
     projections { 
      property 'title', 'title' 
      property 'author', 'author' 
     } 
} 

और आप उपरोक्त उदाहरण की तरह [] वस्तु की एक सूची मिल जाएगा।

+0

कूल - जानना अच्छा है, हम फिलहाल 1.3.2 और रखरखाव मोड में चल रहे हैं, लेकिन अगर मुझे कभी भी अपग्रेड करने का प्रयास मिलता है और इसे आज़माएं, तो मैं वापस आऊंगा और आपको बताऊंगा कि यह कैसे काम करता है। –

+2

फ़्लैश आगे: मैं अब Grails 2.0.3 का उपयोग कर एक प्रोजेक्ट पर हूं और यह अच्छी तरह से काम करता है! –

+0

ऑब्जेक्ट [] की सूची के बजाय ऑब्जेक्ट {} की सूची प्राप्त करने का कोई तरीका है? "अनुमान" का उपयोग करके मेरी एपीआई टूट जाती है क्योंकि मैं वस्तुओं की सूचियों पर भरोसा करता हूं। यह वस्तु [] हालांकि की एक सूची पुनर्प्राप्त करता है। सलाह के लिये धन्यवाद। – Calicoder

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