hibernate sql查询转化为实体类

在多表查询的时候使用hibernate的sql查询的时候,一般返回的是object[]数组,或者可以使用

 session.createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);

来转化为map来进行处理,可以通过以下方式将查询结果转化为实体类:

 

1,sql语句 String sql="select s.id as id,s.classname as classname from grade s,student st where s.id=st.classid"

 

利用以下语句

session.createSQLQuery(sql)      .setResultTransformer(Transformers.aliasToBean(Grade.class))可以将sql中查询出来的字段转化为班级这个实体类,但是必须为每个字段指定别名,别名就是班级类里面的对应的属性,但必须注意,对每一个列都必须addScalar("列名"),如果不设置addScalar方法可能会报转型错误的异常.如果查询的结果里面包括多个表里面的字段,不能对应一个实体类去接受,就需要新建一个与查询结果对应的实体类,或者直接使用map结果集

 

2,sql语句 String sql="select {s.*} from grade s,student st where s.id=st.classid" 

 

针对这样的全部字段查询的sql可以利用addEntity来转化为实体类

SQLQuery query=session.createSQLQuery(sql) ;

query.addEntity("s", Grade.class);

 

SQL查询语句,它带一个占位符,可以让Hibernate使用字段的别名.

查询返回的实体,和它的SQL表的别名.

addEntity()方法将SQL表的别名和实体类联系起来,并且确定查询结果集的形态。

这样就可以将班级这张表里面的所有字段的值赋值给班级这个实体类java培训机构排名,而且必须是所有的属性

 

3,sql语句 String sql="select {s.*},{st.*} from grade s,student st where s.id=st.classid" 

SQLQuery query=session.createSQLQuery(sql) ;

query.addEntity("s", Grade.class);

query.addEntity("st", Student.class);

利用这样的查询得到的是一个object[]数组,object[0]就是班级实体类,object[1]就是学生实体类

可以用addScalar(String arg,Type type)方法定义要返回的字段类型,如

s.createSQLQuery(shuiQingHQL).addScalar("STCD",Hibernate.STRING).addScalar("STNM")

转载于:https://www.cnblogs.com/jinshiyill/p/4976661.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值