开发者社区> 问答> 正文

hibernate query.uniqueResult() 返回的Object?400报错

版本 :3.3.2.GA

我用过很多次的一个 BaseDao 实现的方法:

@Override
	public T getBySQL(String sqlString, Object... values) {
		Query query = this.getSession().createSQLQuery(sqlString).setCacheable(true);
		if (values != null) {
			for (int i = 0; i < values.length; i++) {
				query.setParameter(i, values[i]);
			}
		}
		return (T) query.uniqueResult();
	}

下面的service 层中的代码中报错:

	@Override
	public boolean signing(SigningPlayer signingPlayer) {
		SigningPlayer DBsp = signingPlayerDao.getBySQL("select * from signingplayer where game_id=? and user_id=?",
				signingPlayer.getGameId(), signingPlayer.getUserId());
		if (DBsp != null) {
			return false;
		} else {
			signingPlayerDao.save(signingPlayer);
			return true;
		}

	}

报错位置:

这个baseDao的实现方法我已经用过很多次了,不知道这里为什么类型强转失败。搞了半天没找到原因。请问怎么解决

展开
收起
爱吃鱼的程序员 2020-06-08 10:25:34 708 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    本地sql可以映射实体类吗?只能返回List<Object[]>吧?

    hql应该是没问题的

    回复 @polly:这个方法是我在http://www.cnblogs.com/yinglunstory/p/6090227.html中找到的,他里面就是强转为对应是实体类型,是我使用方式错了,还是这个方法本身是错的呢?第二个问题:我已经把debug的返回的内容贴出来了,我用object接收看到里面像一个数组,用object[]接收会报错。回复 @颖辉小居:你说的还是HQL,如果你执行NativeSql,只能返回List<Object[]>其中,Object[]对应各个字段的值。因为不知道各个字段的类型,因此这里只能是Object的数组,而不能是String[]query.uniqueResult()返回的只有一个object你好,可以debug看看这个对象是什么类型。是个Object

    你这个是SQL语句,又不是HQL语句,怎么可能会自动封装啊,SQL语句查询返回的是结果集啊

    回复 @颖辉小居:hibernate5可以用泛型,少打了个5.。回复 @颖辉小居:hibernate中可以声明泛型了,以前的版本你可以用((SQLQuery)query).addEntity(Entity.class)试试,这个是将原生查询封装成实体的我是在http://www.cnblogs.com/yinglunstory/p/6090227.html找到的,是我用的方式不对还是,这个方法本身是错的啊那请问返回的这个object怎么用呢?

    debug,是一个object,里面像是一个数组,直接用Object[]接收会报错,

    只能是object,debug object内容如下 :

    那么这个怎么从objecto中取得数据呢?

    hibernate的sql查询并不能自动封装城对象,sql语句查询返回的是结果集,活着自己重写方法,利用java的反射自己封装城对象; 或者用hql半面向对象查询和Criteria(全面向对象)查询

    2020-06-08 10:25:46
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spark SQL: Past, Present and Future 立即下载
Spark SQL:Past Present &Future 立即下载
低代码开发师(初级)实战教程 立即下载