java - How to get data from DB by trim spaces using Hibernate? -
मैंने एक नियंत्रक लिखा है जो कि
@RequestMapping (value = "find / {RoleName} ", विधि = जीईटी) सार्वजनिक यूजररिल getByRoleName (@PathVariable (" भूमिकानाम ") स्ट्रिंग भूमिकानाम) {UserRole userRole = userRoleService.findByRoleName (भूमिकानाम); रिटर्न उपयोगकर्तारोल; } UserRole कुछ भी नहीं है लेकिन यह नीचे दिया गया है जैसा कि दिखाया गया है कि @ एंटीटी
@Table (name = "uro_user_roles") सार्वजनिक वर्ग UserRole {
/ * गुण * / @ आईडी @ जनरेटेड वैल्यू (रणनीति = जेनरेशन टाइप। इंडीटीटी) @ कॉलम (नाम = "यूरो_ओल_आईडी") निजी पूर्णांक भूमिका आईडी; @ स्तंभ (नाम = "uro_role_name") निजी स्ट्रिंग भूमिकानाम; @ कॉलम (name = "uro_create_user") निजी स्ट्रिंग createUser; @ कॉलम (नाम = "यूरो_एक्टिव") निजी स्ट्रिंग बनाएंअक्टिव; / *
अब जब मैं निम्न हाइबरनेट फ़ंक्शन का उपयोग करके भूमिका नाम देता हूं तो डीबी डेटा प्राप्त होता है जैसे कि
सार्वजनिक यूजररोल findByRoleName (स्ट्रिंग roleName) {UserRole userPermission = (UserRole) मापदंड () setResultTransformer (Criteria.DISTINCT_ROOT_ENTITY) .add (eq ( "roleName", roleName)) uniqueResult ()।। वापसी उपयोगकर्ताप्रदर्शन; }
यहां मेरी समस्या तब होती है जब मैं सही नाम देता हूं, केवल ऑब्जेक्ट को वापस लौटाता हूँ क्योंकि उसके केस संवेदनशील होते हैं। मेरा मतलब है कि टेबल डेटा के मूल्य से पहले कुछ स्थान है, तो यह वापस नहीं आ रहा है । तो बिना स्थान के नाम और केस संवेदनशील के द्वारा डेटा कैसे प्राप्त करें। क्या रिक्त स्थान को नष्ट करने के साथ डीबी से डेटा प्राप्त करने के लिए सीतनिद्रा में कोई विकल्प है? अगर कोई विकल्प होता है तो कोई ट्रिम () विधि लिखने की कोई आवश्यकता नहीं है जो y पूछ रही है। किसी भी मदद को plz
आप एक SQL प्रतिबंध का उपयोग कर सकते हैं:
सार्वजनिक UserRole findByRoleName (स्ट्रिंग roleName) {UserRole userPermission = (UserRole) मापदंड () .setResultTransformer (Criteria.DISTINCT_ROOT_ENTITY) .add (Restrictions.sqlRestriction ( "ट्रिम (कम ({उर्फ} .roleName)) =?", roleName.trim ( ) .toLowerCase ()), स्ट्रिंगटाइप। INSTANCE) .अनुक्रमिक परिणाम (); वापसी उपयोगकर्ताप्रदर्शन; }
यह MySQL में काम करता है लेकिन सभी डेटाबेस में एक TRIM ()
फ़ंक्शन नहीं है। अन्य डीबी में LTRIM ()
और RTRIM ()
है तो आपको इसे LTRIM (RTRIM (...)) जैसे कॉल करना होगा।
Comments
Post a Comment