在HQL select查询语句中自定义查询结果返回的数据类型

1.select子句用于选择制定的属性或者直接选择某个尸体,当然select选择的属性必须是from后持久化类包含的属性。例如:

select 0.name from Owner o


2.select可以选择任意属性,即不仅可以选择持久化类的直接属性,还可以选择组建属性包含的属性,例如:

select o.name.set from Owner o
    在通常情况下,使用Select子句查询的结果是集合,而集合元素就是select后的实例、属性等组成的object数组
    在特殊情况下,如果select后只有一项(包括持久化实力或属性),则查询得到的集合元素就是该持久化实例或属性

    如果select后有多个项,则每个集合元素就是选择出的多项组成的Object数组,例如如下HQL语句:  
  select o.id ,o from owner o
   执行该HQL语句得到的集合元素是类似于[INT,Owner]结构的Object数组,其中第一个元素是Owner 的id,第二个元素是Owner实例

3.select语句也支持将查询的结果存入一个固定结构的数据类型中

1>将查询结果存入List中
select new List<o.id,o.name> from Owner o
   执行上面的HQL语句后得到一个List<list<int ,String>>,(默认的集合元素是数组)
2>将查询结果存入Map中
select new Map<o.id,o.name>from Owner  o
   执行上面的HQL语句得到一个List<Map<int ,String>>
3>将查询结果存入一个对象中
select new DD<o.id,o.name> from Owner o 
   执行上面的HQL语句得到一个List<DD>
  注:A. 这种情况使用中经常会抛这样的异常:Unable to locate appropriate constructor on class。
       出现这个异常需要检查以下几种情况:
       1)参数构造器的参数类型是否正确
       2)参数构造器的顺序和hql中的顺序是否一致
       3)参数构造器的参数个数是否和hql中的个数一致
      4)参数构造器的参数类型是否TimeStamp
        对于DDTest类没映射到配置文件,通常要求将此hql语句写为:
                           select new 包名.DD<o.id,o.name> from Owner o
4>selset还支持给选中的表达式命名别名
select o.name as ownerName from Owner  o


 

 
   



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值