Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

SQL से HQL क्वेरी Grails

आप HQL में वर्ग और फ़ील्ड नामों का उपयोग करते हैं, और SQL में तालिका और स्तंभ नामों का उपयोग करते हैं। तो आपको एचक्यूएल प्रश्नों में अंडरस्कोर (कम से कम कई नहीं) नहीं देखना चाहिए। साथ ही, यहां एक कारक होने की संभावना नहीं है, लेकिन एचक्यूएल क्वेरी findAll से चलती हैं और वे executeQuery . से चलते हैं थोड़ा अलग हो सकता है। मुझे याद नहीं है कि अंतर क्या है, लेकिन executeQuery सही है चाहे कोई भी डोमेन वर्ग शामिल हो।

डोमेन कक्षाओं को देखे बिना यह जानना कठिन है, लेकिन ऐसा लगता है कि artifact_id artifact.id be होना चाहिए , और document_id document.id be होना चाहिए . और चूंकि आपके पास दस्तावेज़ उदाहरण है, इसलिए वस्तुओं की तुलना करना अधिक ओ-ओ-उचित है, न कि उनकी आईडी। अंत में मैं मान रहा हूँ कि active एक बूलियन गुण है, इसलिए इसे एक बूलियन मान की आवश्यकता है, न कि 1 या 0 की। इसलिए, यह सब एक साथ रखते हुए, मेरा सबसे अच्छा अनुमान यह है कि आप यही चाहते हैं:

def artifacts = Artifact.executeQuery(
   "FROM Artifact WHERE id NOT IN ( " +
   "SELECT artifact.id FROM Classification " +
   "WHERE active = :active) AND document =:doc",
   [active: true, doc:document],
   [max:limit, offset:startIndex])

ध्यान दें कि आपको परम मानों को पेजिनेशन नियंत्रणों से दो मानचित्रों में अलग करने की आवश्यकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आप अपने डेटाबेस स्कीमा को कैसे संस्करणित करते हैं?

  2. MySQL LOAD DATA INFILE:काम करता है, लेकिन अप्रत्याशित लाइन टर्मिनेटर

  3. mysql varbinary बनाम varchar

  4. mysql पदानुक्रम स्व-जुड़ें, सभी उपश्रेणियों को पुनः प्राप्त करें

  5. माइग्रेशन लार्वा 5.1 . में ऑटो इंक्रीमेंट फ़ील्ड को 1000 से प्रारंभ करें सेट करें