मुझे यकीन है कि एचक्यूएल से परिचित कोई व्यक्ति (मैं खुद को नौसिखिया हूं) आसानी से इस प्रश्न का उत्तर दे सकता है।जोडा समय के साथ एचक्यूएल (हाइबरनेट) में किसी तारीख की क्वेरी कैसे करें?
मेरे Grails एप्लिकेशन में, मेरे पास निम्न डोमेन क्लास है।
class Book {
org.joda.time.DateTime releaseDate //I use the PersistentDateTime for persisting via Hibernate (that use a DATETIME type for MySQL DB)
}
मेरी HQL क्वेरी में, मैं पुस्तकें जिनके रिलीज की तारीख रेंज date1
में शामिल है प्राप्त करना चाहते हैं .. date2
उदाहरण के लिए मैंने कोशिश की:
DateTime date1, date2
...
def queryStr = "select * from Book as b where b.releaseDate > $date1 and b.releaseDate < $date2"
def res = Book.executeQuery(queryStr)
लेकिन मैं अपवाद मिला ...caused by: org.springframework.orm.hibernate3.HibernateQueryException: unexpected token:
त्रुटि टोकन दिनांक प्रारूप के लिए इंगित करता है (उदाहरण के लिए 2009-11-27T21:57:18.010+01:00
या Fri Nov 27 22:01:20 CET 2009
)
मैंने सफलता के बिना डेट 1 को डेट क्लास में बदलने की कोशिश की है
तो सही एचक्यूएल कोड क्या है? क्या मुझे पैटर्नफॉरटल विधि का उपयोग करके एक विशिष्ट प्रारूप (कौन सा?) में परिवर्तित करना चाहिए या ऐसा करने के लिए कोई अन्य-स्क्वायरर तरीका है?
धन्यवाद,
फैबियन।
org.joda.time.DateTime आपके SQL पर मानचित्र कैसे करता है? क्या यह सीधे मैदान में है? java.util.Date और java.util.Calendar सीधे डेटाबेस फ़ील्ड में मैप कर सकते हैं। इसके लायक होने के लिए, चूंकि डेटटाइम एक समग्र वस्तु है, इसलिए Grails प्लगइन शायद कस्टम मैपिंग प्रकार को कवर के तहत उपयोग कर रहा है (हाइबरनेट के साथ जावा पर्सिस्टेंस के सेक 5.3 देखें)। – Alan
जैसा कि कोड की टिप्पणी में बताया गया है, डेटटाइम जोडा-टाइम-हाइबरनेट लाइब्रेरी – fabien7474