6

मेरे पास दो तारीख खोज क्षेत्र है अर्थात् से और उससे। मुझे उस उपयोगकर्ता तालिका से रिकॉर्ड्स पुनर्प्राप्त करना होगा जिसका स्टार्टडेट खोज फ़ील्ड में दर्ज की गई तारीखों और तिथियों के बीच है और यदि से और तिथियां शून्य हैं तो मुझे उपयोगकर्ता तालिका से सभी रिकॉर्ड्स पुनर्प्राप्त करना होगा।एचक्यूएल में दो तिथियों के बीच गतिशील रूप से कैसे खोज करें?

FROM USER 
WHERE 
:start_flag =1 
OR 
STARTDATE between :from and :to 

यहाँ start_flag प्रकार int है जहाँ से आप अगर और अशक्त हैं 1 पर सेट है की है:

मैं निम्नलिखित HQL क्वेरी की कोशिश की।

query.setParameter("from",startDt); 
query.setParameter("to",endDt); 
query.setParameter("start_flag",startFlag); 
l= query.list(); 

यहाँ datatypes हैं:

startDt - java.util.Date

endDt- java.util.Date

startFlag- पूर्णांक

जब मैं ऊपर क्वेरी चलाने के साथ और बराबर से शून्य के साथ मुझे निम्नलिखित अपवाद मिलता है:

एसक्यूएल त्रुटि: 932, SQLState: 42000

ORA-00932: असंगत डेटाटाइप्स: DATE तक अपेक्षित बायनरी

आप मुझे बताओ कि इसके बाद के संस्करण की कार्यक्षमता को प्राप्त करने के HQL क्वेरी लिखने के लिए किया जा सका है?

+0

आप का प्रयास किया था 'setDate' (या कुछ इसी तरह)' setParameter' के बजाय? तारीख दिनांकों को दिनांक कॉलम में सही तरीके से मैप किया गया है (या यह गलती से क्रमबद्ध किया गया है)? –

+0

नहीं, मैंने setDate() का प्रयास नहीं किया है, लेकिन मुझे लगता है कि setParameteer() को – user2077648

+0

काम करना चाहिए NHHernate के साथ अपने अनुभव में, ऐसा नहीं है। –

उत्तर

9

इस तरह फिल्टर यह:

String query = "FROM USER WHERE :start_flag =1 "; 
if(startDt!=null && endDt!=null){ 
    query +="OR STARTDATE between :start_date and :end_date"; 
} 

TypedQuery<USER> hql = entityManager.createQuery(query); 

if(startDt!=null && endDt!=null){ 
    hql.setParameter("start_date",startDt).setParameter("end_date",endDt); 
} 
List<USER> result = hql.setParameter("start_flag",startFlag).list(); 
+0

क्षमा करें कि था टाइप करने की त्रुटि इस समाधान, यह अभ्यस्त – user2077648

+0

तो काम नहीं कर रहा है यह, मैं फ़िल्टर कर मेरा उत्तर संपादित उदाहरण – Angga

+0

देने के लिए गतिशील रूप से मानदंड का उपयोग करते हुए एपीआई और अधिक उपयुक्त है प्रकार के प्रश्नों के निर्माण के लिए होगा। http://docs.oracle.com/javaee/6/tutorial/doc/gjitv.html – dbricman

संबंधित मुद्दे