2011-03-01 5 views
21

हाइबरनेट के Criteria एपीआई है Restrictions.ilike समारोह जो निम्नलिखित अनुबंध दिया गया है:अंतर

एक केस-संवेदी "की तरह", Postgres Ilike ऑपरेटर के समान

यह अच्छा है। लेकिन एक ही कक्षा भी like कार्य है, और अधिक अस्पष्ट अनुबंध होने:

एक "की तरह" बाधा नामित संपत्ति को

उदाहरण

Criteria cr = session.createCriteria(Employee.class); 

// To get records having fistName starting with zara 
cr.add(Restrictions.like("firstName", "zara%")); 

// Case sensitive form of the above restriction. 
cr.add(Restrictions.ilike("firstName", "zara%")); 

उत्तर

11

के मामले संवेदनशीलता लागू करें MySQL में, जैसे ऑपरेटर, कॉलम के प्रकार और उनके संयोजन पर निर्भर करता है (http://dev.mysql.com/doc/refman/5.5/en/case-sensitivity.html देखें)।

हाइबरनेट SQL के शीर्ष पर "बस" एक परत है। जैसे ऑपरेटर का अनुबंध एसक्यूएल जैसे ऑपरेटर जारी करना है। यदि आप इसे MySQL और PostgreSQL के लिए समान बनाना चाहते हैं, तो डेटाबेस स्कीमा में सही प्रकार और कॉलेशन चुनें। लेकिन हाइबरनेट जादुई रूप से सभी डेटाबेस एक ही नियम का उपयोग नहीं कर सकता है।

अपना आवेदन डिज़ाइन करें, अपना डेटाबेस चुनें और डिज़ाइन करें ताकि आपके द्वारा देखे जाने वाले व्यवहार वह व्यवहार हो जो आप चाहते हैं।

पीएस: लेकिन मैं मानता हूं कि हाइबरनेट का जावडोक ... परिपूर्ण है।

+0

mysql के लिए 'ilike' काम करता है? – mmcrae

+0

@mmcrae हाँ, यह काम करना चाहिए। जब आप इसका उपयोग करने का प्रयास करते हैं तो क्या होता है? –

0

PostgreSQL में वहाँ है 'iLike' और 'की तरह' विभिन्न ऑपरेटरों, स्तंभ गुणों कारण इस बात से होता है

है कि स्वतंत्र में तो केस संवेदनशीलता
-1

हाइबरनेट की मानदंड एपीआई Restrictions.ilike समारोह जो निम्नलिखित अनुबंध है है :

A case-insensitive "like", similar to Postgres ilike operator 

यह अच्छा है। लेकिन एक ही कक्षा भी समारोह की तरह है, और अधिक अस्पष्ट अनुबंध होने:

Apply a "like" constraint to the named property 

उदाहरण

Criteria cr = session.createCriteria(Employee.class); 

// To get records having fistName starting with zara 
cr.add(Restrictions.like("firstName", "zara%")); 

// Case sensitive form of the above restriction. 
cr.add(Restrictions.ilike("firstName", "zara%")); 
+0

इस उदाहरण में दूसरी टिप्पणी पंक्ति इस उत्तर में पहली पंक्ति के विपरीत है! –

0

ilike आपका इनपुट मान के एक कम कर दिया जाएगा, और जैसे स्तंभ मान की कम

select * from table where lower(column) like lower(?)