Oracle
 sql >> база данни >  >> RDS >> Oracle

Зареждане на Clob данни като низ (нетърпелив) чрез org.hibernate.Query на Hibernate

Току-що имах същия проблем, различни връзки предложиха надграждане на spring до 4.0.1+ и хибернация до 4.3.x, но това нямаше значение. Тогава попаднах на тази връзка, която разреши проблема ми. Авторът пише персонализиран ResultTransformer за Clob и след това задава това като трансформатор за вашата заявка вместо 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. Стойности, разделени със запетая, за функция IN в oracle

  2. Премахване на припокриващите се часове от броя на неработните дни

  3. SQL грешка:ORA-00922:липсваща или невалидна опция за създаване на съставен ключ

  4. Как да конвертирате формата на Oracle Date в Java?

  5. Рекурсивната заявка за зависимости от таблици не е рекурсивна толкова, колкото бих искал