您的位置:首页 > 其它

Hibernate-hibernate 中 Long 与 int 的转换

2016-12-11 21:44 316 查看
hibernate 中使用聚合函数 count 查询记录数时,返回值类型为 Long ,若强行转换则会出现 java.lang.ClassCastException 异常,

正确写法应使用 Number 类型作为过渡则不会出错。

错误写法:

@Override
public int findCountByCid(Integer cid) {
String hql = "SELECT count(*) from Product p WHERE p.categorySecond.category.cid = ?";
Query query = getSession().createQuery(hql).setInteger(0, cid);
List<Integer> list = query.list();//返回值类型应为 Long 强行转换 Integer
int result = list.get(0);//调用将会出现异常
return result;
}

更正后:

@Override
public int findCountByCid(Integer cid) {
String hql = "SELECT count(*) from Product p WHERE p.categorySecond.category.cid = ?";
Query query = getSession().createQuery(hql).setInteger(0, cid);
List<Long> list = query.list();//修正部分
int result = ((Number)list.get(0)).intValue();//修正部分
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate