Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Memuat data Clob sebagai String (bersemangat) melalui org.hibernate.Query Hibernate

Saya baru saja mengalami masalah yang sama, berbagai tautan menyarankan untuk memutakhirkan pegas ke 4.0.1+ dan hibernasi ke 4.3.x tetapi ini tidak ada bedanya. Kemudian saya menemukan tautan ini yang menyelesaikan masalah saya. Penulis menulis ResultTransformer kustom untuk Clob dan kemudian menetapkan ini sebagai transformator untuk kueri Anda alih-alih AliasToEntityMapResultTransformer.

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

Kode dari artikel di bawah ini:

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;
 }
}

Kemudian di kode Anda ganti

query.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);

dengan

query.setResultTransformer(MyResultTransformer.INSTANCE);

Selain itu, solusi alternatifnya bisa dengan mengubah jenis kolom, saya sendiri belum mencobanya.

Sumber: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. Mengapa indeks tidak digunakan untuk kueri ini?

  2. PLS-00394:Jumlah nilai yang salah dalam daftar INTO dari pernyataan pengambilan

  3. Cara mendapatkan nilai untuk tanggal berikutnya dan berikutnya dalam sebuah tabel

  4. klausa awal kueri hierarkis oracle dari join

  5. ORA-30926:tidak bisa mendapatkan set baris yang stabil di tabel sumber