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

स्प्रिंग JDBC BeanPropertyRowMapper हाँ नहीं ('Y', 'N') बूलियन बीन गुणों के लिए

तो मुझे पता चला कि यह कैसे करना है। बाकी डेटा प्रकारों के लिए बीनप्रॉपर्टीरोमैपर को नियंत्रण सौंपने से पहले मैंने कुछ कस्टम कोड के माध्यम से BeanPropertyRowMapper और हैंडलर बूलियन प्रकारों का विस्तार किया।

नोट:यह मेरे लिए काम करता है क्योंकि मैं ऑरैकल का उपयोग करता हूं और सभी 'बूलियन' प्रकार के कॉलम 'y', 'yes', 'n' और 'no' टाइप वैल्यू वाले स्ट्रिंग हैं।

जो लोग संख्यात्मक 1,0 या अन्य प्रारूपों का उपयोग करते हैं, वे संभावित रूप से इसे एक वस्तु हाँ मानचित्र के माध्यम से सामान्य बनाकर और परिणाम से वस्तुओं को प्राप्त करके और उन्हें इस मानचित्र में देखकर इसे और बेहतर बना सकते हैं। आशा है कि यह मेरी जैसी स्थिति में किसी और की मदद करेगा।

आयात करें .apache.commons.lang3.StringUtils;import org.springframework.jdbc.core.BeanPropertyRowMapper;/** * बूलियन फ़ील्ड के लिए अनुमति देने के लिए BeanPropertyRowMapper का विस्तार करता है * सही ढंग से सेट होने के लिए 'Y,'N' टाइप कॉलम में मैप किया जाता है। स्टॉक का उपयोग करना BeanPropertyRowMapper * एक SQLException फेंक देगा। * */सार्वजनिक वर्ग ExtendedBeanPropertyRowMapper BeanPropertyRowMapper का विस्तार करता है {// मान्य वास्तविक मान शामिल हैं सार्वजनिक स्थैतिक अंतिम सेट<स्ट्रिंग> TRUE_SET =नया हैशसेट<स्ट्रिंग>(Arrays.asList("y", "yes", "true" ")); सार्वजनिक विस्तारित बीनप्रॉपर्टीरोमैपर (कक्षा <टी> कक्षा 1) {सुपर (कक्षा 1); } @Override /** * 'Y','N' टाइप कॉलम को * बूलियन प्रॉपर्टीज में मैप करने की क्षमता जोड़ने के लिए getColumnValue को ओवरराइड करें। * * @param rs डेटा धारण करने वाला परिणामसेट है * @param अनुक्रमणिका स्तंभ अनुक्रमणिका है * @param pd बीन गुण है कि प्रत्येक परिणाम वस्तु से मेल खाने की उम्मीद है * (या null यदि कोई निर्दिष्ट नहीं है) * @ऑब्जेक्ट मान लौटाएं * @ निष्कर्षण विफलता के मामले में SQLException फेंकता है * @ देखें org.springframework.jdbc.core.BeanPropertyRowMapper#getColumnValue(java.sql.ResultSet, int, PropertyDescriptor) */ संरक्षित ऑब्जेक्ट getColumnValue(ResultSet rs, int index , प्रॉपर्टी डिस्क्रिप्टर पीडी) SQLException फेंकता है {कक्षा आवश्यक टाइप =pd.getPropertyType (); if (boolean.class.equals(requiredType) || Boolean.class.equals(requiredType)) {स्ट्रिंग stringValue =rs.getString(index); if(!StringUtils.isEmpty(stringValue) &&TRUE_SET.contains(stringValue.toLowerCase ())){ रिटर्न ट्रू; } और झूठी वापसी; } रिटर्न super.getColumnValue(rs, index, pd); }}

  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. hibernate.jpa.criteria.BasicPathUsageException:मूल प्रकार की विशेषता में शामिल नहीं हो सकता

  3. बैच फ़ाइल से SQL निष्पादित करें

  4. गैर-अशक्त स्तंभों को अजीब तरीके से गिनना

  5. सुसंगतता:त्रुटि:मुख्य वर्ग com.tangosol.net.DefaultCacheServer को ढूंढ या लोड नहीं कर सका