关于Hibernate的createSQLQuery问题

本文介绍了Hibernate框架中createQuery与createSQLQuery的区别及其应用场景。createQuery主要用于执行HQL查询,返回bean对象列表;createSQLQuery则用于执行原生SQL语句,并通过特定方式将结果转换为bean对象。此外,还提供了在不同Hibernate版本中处理字符串类型的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hibernate中createQuery与createSQLQuery的

   createQuery是主要执行HQL语句的,createSQLQuery是执行SQL语句的。

   createQuery查询出的数据是以生成的bean对象返回LIst;而createSQLQuery返回的是数组,

   所以要想把查询的数据转换为bean对象装入LIst返回就得手动转换:

    ①:如果要转换成的bean对象是一个实体类的话,可以用:

            Query query = session.createSQLQuery(sql).addEntity(实体类名.class);

    ②:如果要转换的bean对象是一个VO或者是POLO对象的话,得用:

            .setResultTransformer(Transformers.aliasToBean(VO对象名.class));

 

关于Hibernate.String 提示过期:

    HIbernate.String如果用在Hibernate4.0以上版本时会报错,因为在4.0以后不在使用了;

    HIbernate.String应用在3.6.5版本及以下。用HIbernate.String如果报错或者提示过期的话可以用

     StandardBasicTypes.STRING代替。

 

 

下面是刚才用到的一段代码:

addScalar是把SQL语句里起的别名跟VO对象里的字段对应,StandardBasicTypes.STRING是转换成跟VO对象里对应的字段类型一致。

StringBuffer sb = new StringBuffer();
sb.append(“ SQL语句 ”);
Session session = this.getSession();
		Query query = session.createSQLQuery(sb.toString())
				.addScalar("username", StandardBasicTypes.STRING)
				.addScalar("count", StandardBasicTypes.STRING)
				//将结果集映射为OrderCountHBXBySJVO对象   
				.setResultTransformer(Transformers.aliasToBean(OrderCountHBXBySJVO.class));
		List<OrderCountHBXBySJVO> lists = query.list();


addScalaraddScalaraddScalaraddScalaraddScalaraddScalar

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值