现象:
liferay中查询数据,用到如下语句 select xx from yyy where .....;
原因:
只select一个字段
解决思路:
1. 类型转换, 尝试biginteger, object 等等均不可行,转成object都不可以,此路不通。
2. SELECT XXX AS COUNT_VALUE from yyy where .....
(COUNT_VALUE 是liferay定义的关键字)
3. SELECT XXX , ZZZ FROM yyyy where ......
select 多于一个字段就可以正常操作,不会报转换异常
具体代码:
2.
红色字体根据实际情况改变
Session session = null;
try {
session = openSession();
StringBuffer sql = new StringBuffer("");
sql.append(" SELECT xxx AS COUNT_VALUE ");
...................
SQLQuery q = session.createSQLQuery(sql.toString());
q.addScalar(COUNT_COLUMN_NAME,
Type.DOUBLE);
QueryPos qPos = QueryPos.getInstance(q);
qPos.add(ZZZZ);
Iterator<Double> itr = q.list().iterator();
if (itr.hasNext()) {
Double count = itr.next();
if (count != null) {
amount = count.doubleValue();
}
}
return amount;
} catch (Exception e) {
throw new SystemException(e);
} finally {
closeSession(session);
}
3.
try {
session = openSession();
StringBuffer sql = new StringBuffer("");
..............
SQLQuery q = session.createSQLQuery(sql.toString());
QueryPos qPos = QueryPos.getInstance(q);
qPos.add(voyageIDPre);
List list = QueryUtil.list(q, getDialect(), 0, Integer.MAX_VALUE);
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
//need check : list is not null
for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = new HashMap<String, Object>();
Object[] record = (Object[]) list.get(i);
map.put("xxx", record[0] == null? "" : record[0]);
map.put("yyyy", record[1] == null? "" : record[1]);
map.put("yyyy", record[6] == null? "" : record[6]);
result.add(map);
}
return result;
} catch (Exception e) {
throw new SystemException(e);
} finally {
closeSession(session);
}
java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.
猜你喜欢
转载自likaidalian.iteye.com/blog/1701566
今日推荐
周排行