2012-10-08 15 views
8

मैं Grails में एक संस्करण नियंत्रण डोमेन वर्ग बनाने हूँ:तालिका स्तंभ में अधिकतम मान ज्ञात

class VersionControl { 

    Date dateCreated 
    Long versionNumber 

    Long getLatestVersionNumber() { 
     //return largest versionNumber 
    } 

} 

मैं एक प्रश्न जोड़ने के लिए संग्रहीत सबसे बड़ा संस्करण संख्या प्राप्त करना चाहते हैं:

Long getLatestVersionNumber() 

में एसक्यूएल यह क्वेरी निम्नानुसार कम या कम दिखाई देगी:

SELECT TOP 1 MAX(versionNumber) FROM VersionControl 

फ़ंक्शन को लॉन के रूप में मान वापस करना होगा जी।

Grails में ऐसा करने का सही तरीका क्या है?

उत्तर

28

आप GORM criteria उपयोग कर सकते हैं, अनुमानों के द्वारा क्वेरी:

VersionControl.createCriteria().get { 
    projections { 
     max "versionNumber" 
    } 
} as Long 
+0

धन्यवाद, यह उत्तर पूरी तरह से काम करता है । – Chopo87

+0

यह नियंत्रक से प्रतीत होता है। क्या आप अपने विचार का एक उदाहरण प्रदान कर सकते हैं? –

0

VersionControl.find ("VersionControl कुलपति अधिकतम (vc.versionNumber) से")

+0

Grails 2.1.0 खोज क्वेरी के भीतर MAX को शामिल करने जैसा प्रतीत नहीं होता है: अप्रत्याशित टोकन: अधिकतम लाइन 1, कॉलम 39 [वर्जनकंट्रोल वीसी अधिकतम (vc.versionNumber) से] – Chopo87

4
VersionControl.executeQuery("select max(versionNumber) from VersionControl") 

यह आसान मुझे समझने के लिए है ।

0

एक प्रश्न में अधिकतम की गणना करने के लिए, मुझे लगता है कि सबसे अच्छा मापदंड विकल्प है:

def maxVersion = VersionControl.withCriteria { 
    projections{ 
     max 'versionNumber' 
    } 

} 

आप एक GroupBy संशोधक जोड़ना चाहते हैं, बस एक नई लाइन अनुमानों बंद में इतने तरह जोड़ें:

VersionControl.withCriteria { 
    projections{ 
     avg 'score' 
     groupProperty 'channelId' 
    } 

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