同じ問題が発生しました。さまざまなリンクで、Springを4.0.1+にアップグレードし、休止状態を4.3.xにアップグレードすることが提案されましたが、これによる違いはありませんでした。それから私は私の問題を解決したこのリンクに出くわしました。作成者は、ClobのカスタムResultTransformerを作成し、これを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