在Hibernate中如果通过
查询,返回值中只会有一个“合”字。
经查,常量在数据库中被认为是CHAR类型的,Hibernate取值时将其保存为Character类型,而Character只能保存一个字符,所以造成返回值中只存在一个字符。Hibernate官方已存在此bug ,却从未修复。
该bug中给出2中解决方法:
1.继承一个Dialect,并注册CHAR类型的对应方式。代码如下
public class MySQLServerDialect extends org.hibernate.dialect.SQLServerDialect { public MySQLServerDialect() { super(); //very important, mapping char(n) to String registerHibernateType(Types.CHAR, Hibernate.STRING.getName()); } }
2.设置字段对应的类型(缺点是如果查询很多字段,每个字段都必须设置,没设置类型的字段在结果集中是不存在的),代码如下
还有一种解决方法是在SQL中设置该字段的类型,代码如下
session.createSQLQuery("select cast('合计' as varchar(4)) as name from dual").list()
该方法在Oracle和SQL Server中可用。
Hibernate中将SQL查询出来字段转换为对象的方法有两种
1.使用ResultTransformer,代码如下
query.setResultTransformer(new AliasToBeanResultTransformer(StudentDTO.class)).list()
这种方法要求数据库的字段名和类的属性的大小写必须一致,但是Oracle查询返回的字段名却全是大写。
2.使用addEntity方法,这种方法的缺点是SQL必须写成select * from users的形式或select {a.*},{b.*} from a,b where...的格式。
相关推荐
Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQL...
hibernate实现动态SQL查询,通过XML配置SQL,FREEMARKER 解析,生成要执行的SQL
Hibernate 函数 ,子查询 和原生SQL查询。Hibernate 函数 ,子查询 和原生SQL查询
Hibernate+本地SQL查询SQLQuery宣贯.pdf
模仿Hibernate生产SQL语句,使用Java反射
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
hibernate中使用sql 而不是hql语句
Hibernate连表查询 Hibernate连表查询
hibernate将本地SQL查询结果封装成对象。如进行复杂的统计等本地sql语句查询后,直接放到对象里了,而不会再使用Object进行强转
hibernate执行原生sql语句
就是如何让输出sql方便查看,因为出了问题时,要去查错时sql日志会给我们很大帮助,但hibernate通过配p6spy输出很乱,且只能输了到spy.log中,很不好查看,这里是我在项目中的一个解决过程,和大家分享一下,按照...
Hibernate中的查询:HQL、Criteria、原生SQl的Demo,希望可以帮助大家理解Hibernate查询。
不错的分页(Hibernate+sqlserver2000分页)值得大家一看。
使用hibernate对sqlserver 2005进行增删改查
让hibernate输出sql语句参数配置.doc
hibernate 多表查询 hibernate 多表不同于一般的sql嵌套查询,嵌套查询是不支持的,所以必须要配置好才能实现多表!只要配置好了,还是特别好用的
最容易入门的hibernate操作sqlServer数据库例子
NULL 博文链接:https://mlxnle.iteye.com/blog/1766676
该方式是原生SQL查询的一种方式,需要个人自己书写SQL语句进行操作,用法比较灵活多变,适合比较复杂的SQL查询.该压缩包是本人对该查询方式的一种总结练习
使用Hibernate编写通用数据库操作代码