请教一下clob字段的读取问题

按照simple的例子JDBCDAO.java修改的
数据库中的clob字段通过
List list = pageIteratorSolverOfCategory.queryMultiObject(queryParams,
GET_FIELD);
得到的list如下:
“[{CATEGORYNAME=root, DESCRIPTION=java.io.BufferedReader@fd5428, LEVEL=root}]”DESCRIPTION字段是CLOB字段,如何才能读出来?
Iterator iter = list.iterator();
if (iter.hasNext()) {
ret = new CategoryModel();
Map map = (Map) iter.next();

String s1=(String) map.get("CATEGORYNAME");
ret.setCategoryName(s1);
ret.setDescription((String)map.get("DESCRIPTION"));
到这里就出错抛出异常,跳到catch(Exception se)无法赋值。
ret.setLevel((String) map.get("LEVEL"));

}
} catch (Exception se) {
}
请问该怎样操作clob字段?数据库选用H2数据库。

改了一下就用jdbc来获取就行了
Connection conn = null;
PreparedStatement prepstmt = null;
CategoryModel ret =new CategoryModel();
try {
conn=dataSource.getConnection();
logger.debug(" enter Category:" + category);
String GET_FIELD = "select * from Category where CategoryName ='"+ category+"'";
prepstmt = conn.prepareStatement(GET_FIELD);
ResultSet rs = prepstmt.executeQuery();
if (rs.next()){
String categoryName = (String)rs.getString("categoryName");
String description=(String)rs.getString("description");
description 是clob字段,本来想用rs.getclob(),也不行,反而是用rs.getString()可以了,不知道是怎么回事?

String level=(String)rs.getString("level");
ret.setCategoryName(categoryName);
ret.setDescription(description);
ret.setLevel(level);
}
另问一下,直接用jdbc的方法,会有什么不足之处?