HQL查询指定字段结果集列表

用HQL语句查询实体类列表,返回结果List分为三种情况:

  • 查询全部字段(from 实体类),默认List中封装实体类本身,所有属性都被填充;
  • 只查询一个字段,默认List中封装Object对象;
  • 查询两个或两个以上的字段,默认List中封装Object[],长度与指定查询字段数一致。

后两种情况无法直接转换成实体类的对象, 解决方法:

  1. 单表查询:HQL使用select new 包名.类名A(属性1,属性2,…)  from 实体类A,同时必须在实体类添加带参的构造方法;
  2. 多表查询:HQL查询多表部分字段,select new 包名.A类名 (A.属性1,B.属性2,…)  from A类名,B类名 where A.id = B.a.id,同时必须在要返回的A类中添加B类的属性(不想冗余可用@Transient注解)和带参的构造方法

  • 参数的个数和顺序与(属性1,属性 2,...)保持一致

一般不加包名(有异常那就加包名):
1.单表查询:
有包名
select new cn.java.domain.Comment(id, title, score) from Comment
不加包名
select new Comment(id, title, score) from Comment

2.多表查询
不加包名
select new Comment(a.id, a.title, a.score, b.dimensionName) from Comment a, CommentDetail b
where a.id = b.comment.id
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值