ठीक है, विभिन्न रणनीतियों के साथ बहुत सारे प्रयोग करने के बाद, मैंने जो किया वह आखिरकार काम कर गया।
मैंने यह पोस्ट देखा यहां
और अचानक जेपीए याद आ गया Tuple
इंटरफ़ेस जो एक ऑब्जेक्ट है जो एकाधिक परिणाम प्रकार (ओं) को वापस कर सकता है। तो मेरा like
करने के लिए तुलना, और चूंकि दिनांक को केवल एक स्ट्रिंग में नहीं डाला जा सकता है, यहां चरण हैं;
- मुझे कॉलम
Tuple
. के रूप में मिलता है - टुपल ऑब्जेक्ट पर एक जांच करें कि यह दिनांक से असाइन करने योग्य है या नहीं
- यदि ऐसा है, तो दिनांक-प्रारूप व्यंजक प्राप्त करें और इसे
like
पर पास करें अभिव्यक्ति।
तो अनिवार्य रूप से, यहाँ मेरे पास शुरू में क्या था जो स्पष्ट रूप से विफल हो रहा था;
predicates.add(cb.like(cb.lower(entity.get("dateJoined").as(String.class)), "%"+search.toLowerCase()+"%"));
अब, मेरे पास यही है जो खूबसूरती से काम करता है;
Path<Tuple> tuple = entity.<Tuple>get("dateJoined");
if(tuple.getJavaType().isAssignableFrom(Date.class)){
Expression<String> dateStringExpr = cb.function("DATE_FORMAT", String.class, entity.get("dateJoined"), cb.literal("'%d/%m/%Y %r'"));
predicates.add(cb.like(cb.lower(dateStringExpr), "%"+search.toLowerCase()+"%"));
}
ध्यान देने योग्य विचार -
- मुझे पता है कि जहां से भी खोज शुरू की जाएगी, मेरी सभी तिथियां इस फॉर्म में प्रस्तुत की गई हैं
07/10/2015 10:25:09 PM
इसलिए मेरेlike
. में तुलना के लिए दिनांक को प्रारूपित करने के बारे में जानने की मेरी क्षमता अभिव्यक्ति के रूप में"'%d/%m/%Y %r'"
। - यह सिर्फ एक कदम है जो खजूर के लिए काम करता है। अधिकांश अन्य प्रकार जैसे int, long, char ... आदि ... सभी को सीधे स्ट्रिंग में कास्ट किया जा सकता है और जैसा कि मैं अधिक प्रकार के डेटा का पता लगाता हूं, मैं निश्चित रूप से किसी भी अन्य प्रकार के लिए ऐसा ही करूंगा जिसे सीधे स्ट्रिंग में कास्ट नहीं किया जा सकता है ।
हालांकि यह मेरे लिए पूरी तरह से काम करता है, लेकिन इससे पहले कि मैं इसे सही उत्तर के रूप में चिह्नित करूं, मैं इसे कुछ और व्यापक परीक्षणों के अधीन करने जा रहा हूं और इस प्रक्रिया में इसे किसी भी व्यक्ति की टिप्पणियों के लिए खुला रखता हूं, जिसे मेरी रणनीति के बारे में कोई आपत्ति है।पी>
और अंत में, उस एक व्यक्ति को जिसने किसी भी तरह से मदद की... चीयर्स!