sql >> Database >  >> RDS >> Oracle

Clob-gegevens laden als een string (gretig) via Hibernate's org.hibernate.Query

Ik had net hetzelfde probleem, verschillende links stelden voor om de lente te upgraden naar 4.0.1+ en de slaapstand naar 4.3.x, maar dit maakte geen verschil. Toen kwam ik deze link tegen die mijn probleem oploste. De auteur schrijft een aangepaste ResultTransformer voor de Clob en stelt deze vervolgens in als de transformator voor uw query in plaats van AliasToEntityMapResultTransformer.

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

Code uit onderstaand artikel:

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

Vervang dan in uw code

query.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);

met

query.setResultTransformer(MyResultTransformer.INSTANCE);

Daarnaast zou een alternatieve oplossing kunnen zijn om het kolomtype te wijzigen, ik heb het zelf niet geprobeerd.

Bron:http://oreilly.com/java/excerpts/harnessing -hibernate/hibernate-types.html



  1. Converteer een Juliaanse datum naar kalenderdatum in Postgresql

  2. SQL:hoe kan ik een waarde in een kolom alleen bijwerken als die waarde null is?

  3. AVG ophalen waarbij nul- of nulwaarden worden genegeerd

  4. Hoe Sinh() werkt in PostgreSQL