मैं एक हाइबरनेट मानदंड तैयार करता हूं जो जांच करेगा कि एक वर्ष के दौरान अनुबंध वैध है या नहीं। अनुबंध की मानक तिथि-क्षेत्र के रूप में प्रारंभ और समाप्ति तिथि है।हाइबरनेट मानदंड निकालने की तिथि
तो एसक्यूएल सर्वर के लिए इस्तेमाल किया जा रहा है, मैं इस एसक्यूएल की लाइनों में कुछ लगता होगा:
SELECT * FROM CONTRACT WHERE YEAR(startDate) <= ? AND YEAR(endDate) >= ?
questionmark एक पूर्णांक के रूप में दिए गए वर्ष है।
तो इसे हाइबरनेट मानदंड में कैसे परिवर्तित करें?
int year = 2011; //Just a testyear for example purposes.
DetachedCriteria criteria = DetachedCriteria.forClass(Contract.class)
.add(Restrictions.le("startDate", year))
.add(Restrictions.ge("endDate", year));
आप देख सकते हैं, मैं थोड़ा जहां मैं एक साल में बदलने की तारीख की तो यह तुलना की जा सकती याद आ रही है। स्वाभाविक रूप से मेरा कोड इस तरह से नहीं चलता है।
वांछित परिणाम कैसे प्राप्त करें इस पर कोई सुझाव?
समाधान 1 एक अच्छा स्वच्छ विकल्प है, हालांकि 'toEndOfYear' विधि के लिए 1 जोड़ना चाहिए वर्ष के रूप में इसे 'cal.set' में पारित किया गया, अन्यथा आपको पिछले वर्ष का अंत मिलता है – Numeron