lucky

编程彩笔的成长史

在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


 

 
   



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/QQQQQQ654/article/details/52345654
个人分类: Hibernate
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭