Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

खजूर के लिए हाइबरनेट मानदंड

आप Restrictions.like(... . का उपयोग क्यों करते हैं? )?

आपको Restrictions.eq(...) . का उपयोग करना चाहिए ।

ध्यान दें कि आप .le . का भी उपयोग कर सकते हैं , .lt , .ge , .gt तारीख वस्तुओं पर तुलना ऑपरेटरों के रूप में। LIKE ऑपरेटर इस मामले के लिए उपयुक्त नहीं है क्योंकि LIKE उपयोगी है जब आप किसी कॉलम की आंशिक सामग्री के अनुसार परिणामों का मिलान करना चाहते हैं। कृपया संदर्भ के लिए http://www.sql-tutorial.net/SQL-LIKE.asp देखें।

उदाहरण के लिए यदि आपके पास कुछ लोगों के पूरे नाम वाला नाम कॉलम है, तो आप where name like 'robert %' कर सकते हैं ताकि आप 'robert ' . से शुरू होने वाले नाम से सभी प्रविष्टियां वापस कर दें (% किसी भी वर्ण को प्रतिस्थापित कर सकता है)।

आपके मामले में आप उस तारीख की पूरी सामग्री जानते हैं जिसका आप मिलान करने का प्रयास कर रहे हैं, इसलिए आपको LIKE का उपयोग नहीं करना चाहिए लेकिन समानता। मुझे लगता है कि हाइबरनेट आपको इस मामले में कोई अपवाद नहीं देता है, लेकिन वैसे भी आपको शायद Restrictions.eq(...) के साथ एक ही समस्या होगी। ।

कोड के साथ आपको मिली आपकी तिथि वस्तु:

SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-YYYY");
String myDate = "17-04-2011";
Date date = formatter.parse(myDate);

यह दिनांक वस्तु 17-04-2011 0h, 0 मिनट, 0 सेकंड और 0 नैनोसेकंड के बराबर है।

इसका मतलब है कि डेटाबेस में आपकी प्रविष्टियाँ बिल्कुल . होनी चाहिए उस तारीख। मेरा मतलब यह है कि यदि आपकी डेटाबेस प्रविष्टि की तिथि "17-अप्रैल-2011 19:20:23.707000000" है, तो इसे पुनर्प्राप्त नहीं किया जाएगा क्योंकि आप केवल उस तिथि के लिए पूछते हैं:"17-अप्रैल-2011 00:00:00.00000000"।

यदि आप किसी दिए गए दिन से अपने डेटाबेस की सभी प्रविष्टियों को पुनः प्राप्त करना चाहते हैं, तो आपको निम्नलिखित कोड का उपयोग करना होगा:

    SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-YYYY");
    String myDate = "17-04-2011";
    // Create date 17-04-2011 - 00h00
    Date minDate = formatter.parse(myDate);
    // Create date 18-04-2011 - 00h00 
    // -> We take the 1st date and add it 1 day in millisecond thanks to a useful and not so known class
    Date maxDate = new Date(minDate.getTime() + TimeUnit.DAYS.toMillis(1));
    Conjunction and = Restrictions.conjunction();
    // The order date must be >= 17-04-2011 - 00h00
    and.add( Restrictions.ge("orderDate", minDate) );
    // And the order date must be < 18-04-2011 - 00h00
    and.add( Restrictions.lt("orderDate", maxDate) ); 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जावा वर्ग से तालिका प्रकार के रूप में आउट पैरामीटर के साथ प्रक्रिया को कैसे कॉल करें

  2. java.sql.Timestamp समयक्षेत्र विशिष्ट है?

  3. पीएल/एसक्यूएल पैकेज-स्तरीय रिकॉर्ड प्रकारों के बारे में मेटाडेटा

  4. Oracle sql एकल कॉलम में विभिन्न मानों के उदाहरणों की गणना करने के लिए

  5. पीएल/एसक्यूएल में अपवाद कैसे बढ़ाएं?