मुझे बस एक ही समस्या थी, विभिन्न लिंक ने वसंत को 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