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

हाइबरनेट के org.hibernate.Query . के माध्यम से क्लॉब डेटा को स्ट्रिंग (उत्सुक) के रूप में लोड करना

मुझे बस एक ही समस्या थी, विभिन्न लिंक ने वसंत को 4.0.1+ में अपग्रेड करने और 4.3.x पर हाइबरनेट करने का सुझाव दिया लेकिन इससे कोई फर्क नहीं पड़ा। तब मैं इस लिंक पर आया जिसने मेरी समस्या का समाधान किया। लेखक क्लॉब के लिए एक कस्टम परिणाम ट्रांसफॉर्मर लिखता है और फिर इसे AliasToEntityMapResultTransformer के बजाय क्वेरी के लिए ट्रांसफॉर्मर के रूप में सेट करता है।

http://javatechtricks.blogspot.co .uk/2012/12/hibernate-clob-to-string-conversion.html

नीचे दिए गए लेख से कोड:

public class MyResultTransformer extends BasicTransformerAdapter {

 public final static MyResultTransformer INSTANCE;
 static {
  INSTANCE = new MyResultTransformer();
 }

 private MyResultTransformer() {

 }
 private static final long serialVersionUID = 1L;

 @Override
 public Object transformTuple(Object[] tuple, String[] aliases) {
  Map<String, Object> map = new HashMap<String, Object>();
  for (int i = 0; i < aliases.length; i++) {
   Object t = tuple[i];
   if (t != null && t instanceof Clob) {
    Clob c = (Clob) tuple[i];
    try {
     ByteArrayOutputStream bos = new ByteArrayOutputStream();
     IOUtils.copy(c.getAsciiStream(), bos);
     t = new String(bos.toByteArray());
    } catch (SQLException e) {
     e.printStackTrace();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
   map.put(aliases[i], t);
  }
  return map;
 }
}

फिर अपने कोड में बदलें

query.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);

के साथ

query.setResultTransformer(MyResultTransformer.INSTANCE);

इसके अलावा, कॉलम प्रकार को बदलने के लिए एक वैकल्पिक समाधान हो सकता है, मैंने इसे स्वयं नहीं किया है।

स्रोत:http://oreilly.com/java/excerpts/harnessing -hibernate/hibernate-types.html



  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. Oracle अद्यतन व्यवहार के लिए चयन करें

  3. Oracle क्लॉज के साथ टेबल का उपयोग करता है

  4. पीएल/एसक्यूएल में किसी दिनांक सीमा पर पुनरावृति कैसे करें

  5. ऑरैकल में उप-चयन करें