मूल रूप से, मेरे सवाल का इस एक के रूप में ही है, लेकिन के लिए जावा के (JBoss) हाइबरनेट: How can we order a column as int using hibernate criteria API?Convert स्ट्रिंग हाइबरनेट आदेश कसौटी में int करने के लिए
मैं एक स्ट्रिंग से int करने के लिए एक कलाकारों के साथ एक आदेश प्रतिबंध बनाना चाहते हैं स्तंभ। कुछ
criteria.addOrder(Order.asc("cast(id as int)"));
अपवाद "संपत्ति को हल नहीं कर सका: [वर्ग] के int (आईडी के रूप में)"। मैंने int और integer के साथ दोनों कास्ट (ए) और कन्वर्ट (,) को आजमाया है।
यह समाधान काम करता है यदि आप आरोही या अवरोही निर्दिष्ट नहीं करना चाहते हैं, क्योंकि दूसरा पैरामीटर मूल में स्केलस्ट्रिंग विधि में उपयोग किया जाता है। यदि आप इसे ओवरराइड करते हैं तो आपको स्ट्रिंग के अंत में एसी या desc जोड़ना होगा। – KarolR
करोलआर, यही कारण है कि विधि को एसक्लस्ट्रिंग को बुलाया जाता है। आप अपनी इच्छानुसार अपना ऑर्डर लिख सकते हैं, लेकिन आपको पूरे ऑर्डर स्ट्रिंग को निर्दिष्ट करना चाहिए। और एक और - ऑर्डर के लिए हमेशा दिशा होती है, डिफ़ॉल्ट रूप से "एसी" का उपयोग किया जाता है, इसलिए "कास्ट (आईडी के रूप में आईडी)" वास्तव में "कास्ट (आईडी के रूप में आईडी) एसी" है, लेकिन आप इसे छोड़ सकते हैं। आप जटिल क्रम निर्दिष्ट कर सकते हैं, कैसे हाइबरनेट को तय करना चाहिए कि दिशा कहां रखना है, जिसे पैरामीटर के रूप में निर्दिष्ट किया गया था? – yorlin
यह वास्तव में बहुत उपयोगी है और आपने मुझे ऑर्डर इश्यू के लिए एसक्यूएल के रूप में अपने मानदंड कोड को दोबारा करने के लिए बहुत समय व्यतीत करने से बचाया है। आपकी टिप्पणियों और उत्तर दोनों के लिए +1। – nihirus