hibernate long mysql_hibernate returning BigInteger instead of Long(hibernate返回java类型为BigInteger)...

场景: mysql数据库定义数据类型为bigInt, hibernate映射文件中定义类型为Long,通过hibernate查询出来的确实java.math.BigInteger

private Long id;

private Long projectId;

private Long orgRoleId;

数据库定义类型为bigInt, Mysql数据库

查询:

List> list = this.hibernateTemplate

.execute(new HibernateCallback>>() {

public List> doInHibernate(

Session session) throws HibernateException,

SQLException {

List find = null;

String sql = "select t1.* ,t2.portalItemId as itemId ,t2._column ,t2._row ,t2._order ,t2.orgRoleId ,t2.projectId, t2.workZoneSiteId ,t2.portalItemHeight,t2.portalItemWidth from portal_item as t1,portal_default_workzonesite_item as t2 where t1.status=1 and t1.id=t2.portalItemId and t2.workZoneSiteId='"

+ workZoneSiteId + "'";

SQLQuery query = session.createSQLQuery(sql);

query

.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);

find = query.list();

return find;

}

});

在得到的list拿出相应原本以为Long类型数据进行Long型转换时抛出Exception:

ClassCastException: cannot cast java.math.BigInteger to java.lang.Long

请问有人遇到过这情况吗,请问发生这种不预期的异常原因在哪?谢谢

问题补充:

@Test

public void getUserPersonalWorkZonesUnderProject() {

List> list = workZoneService

.getUserPersonalWorkZonesUnderProject(projectId, userId);

if(list!=null){

for (Map map : list) {

Set keys = map.keySet();

for (String key : keys) {

log.info("key="+key+", value.class="+map.get(key).getClass());

}

}

}

logInfo(list);

}

这是我针对上面hibernate查询写的test,

结果如下:

[INFO ] [2012-12-17 14:05:16,710] [com.iscreate.plat.portal.test.WorkZoneServiceTest] - key=title, value.class=class java.lang.String

[INFO ] [2012-12-17 14:05:16,710] [com.iscreate.plat.portal.test.WorkZoneServiceTest] - key=visible, value.class=class java.lang.Integer

[INFO ] [2012-12-17 14:05:16,710] [com.iscreate.plat.portal.test.WorkZoneServiceTest] - key=status, value.class=class java.lang.Integer

[INFO ] [2012-12-17 14:05:16,710] [com.iscreate.plat.portal.test.WorkZoneServiceTest] - key=userId, value.class=class java.lang.String

[INFO ] [2012-12-17 14:05:16,710] [com.iscreate.plat.portal.test.WorkZoneServiceTest] - key=_order, value.class=class java.lang.Integer

[INFO ] [2012-12-17 14:05:16,710] [com.iscreate.plat.portal.test.WorkZoneServiceTest] - key=projectId, value.class=class java.math.BigInteger

[INFO ] [2012-12-17 14:05:16,710] [com.iscreate.plat.portal.test.WorkZoneServiceTest] - key=workZoneId, value.class=class java.math.BigInteger

[INFO ] [2012-12-17 14:05:16,710] [com.iscreate.plat.portal.test.WorkZoneServiceTest] - key=zoneName, value.class=class java.lang.String

问题补充:这样的结果只有在放回map结果才出现,返回实体对象不存在类型问题,是不是sql问题呢?还是查询方式引起的?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值