2011-01-08 11 views
19

मानदंड निर्माता का उपयोग करते हुए केस अनदेखा केस क्वेरी कैसे करें। विवरण संपत्ति के लिए मैं मैं क्वेरी निम्नलिखित है की तरह upper(description) like '%xyz%'हाइबरनेट जेपीए मानदंडबिल्डर मामले की स्थिति को अनदेखा करें

कुछ करना चाहता हूँ

CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); 

    CriteriaQuery<Person> personCriteriaQuery = criteriaBuilder.createQuery(Person.class); 
    Root<Person> personRoot = personCriteriaQuery.from(Person.class); 

    personCriteriaQuery.select(personRoot); 
    personCriteriaQuery.where(criteriaBuilder.like(personRoot.get(Person_.description), "%"+filter.getDescription().toUpperCase()+"%")); 
    List<Person> pageResults = entityManager.createQuery(personCriteriaQuery).getResultList(); 

उत्तर

39

वहाँ एक CriteriaBuilder.upper() विधि है: डेटाबेस में Fußballschuhe तरह पत्र के साथ जर्मन शब्द हैं

personCriteriaQuery.where(criteriaBuilder.like(
    criteriaBuilder.upper(personRoot.get(Person_.description)), 
    "%"+filter.getDescription().toUpperCase()+"%"));  
+1

आपको बहुत बहुत धन्यवाद – user373201

2

हैं कॉलम, जावा अपरकेस विधि में पैरामीटर को FUSSBALLSCHUHE में संशोधित करेगा और क्वेरी मेल नहीं खाएगी। लोअरकेस इस मामले में काम करेगा:

personCriteriaQuery.where(criteriaBuilder.like(
    criteriaBuilder.lower(personRoot.get(Person_.description)), 
    "%"+filter.getDescription().toLowerCase()+"%")); 
संबंधित मुद्दे