码迷,mamicode.com
首页 > 其他好文 > 详细

HQL语句中数据类型转换

时间:2017-09-26 17:54:53      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:数据   new   XML   create   hiberna   异常   desc   font   ring   

  我们需要从数据库中取出序号最大的记录,想到的方法就是使用order by子句进行排序(desc倒序),然后取出第一个对象,可是当初设计数据库时(我们是在原来的数据库的基础上开发新系统),竟然将序号字段的类型设成了varchar2,真是让人郁闷,这样的话,如果排序的话,就是对字符串排序,12是比2小的数,那么就需要转换一下类型。

     以下写法调整中是错误的,不能执行,报空指针错误:select cast(t.a as Integer) from table_1 t

    我也使用了这段代码,同样报空指针异常,不知道怎么回事,我的脑袋里突然冒出一个想法,将Integer的I变为小写,代码如下:

public List findByPlanId(String id){   
     return getHibernateTemplate().find("from edu.bjtu.port.domain.DetailOfPlanForDayAndNight p where p.id.planId=? order by cast(p.id.detailId as integer) desc",id);   
}  

  这样就成功了。

       这段代码的另一个让我注意的地方是,当使用复合主键时,创建一个主键类,然后想要使用其中的一个主键进行查询,必须要这样写  p(实体类).id(主键类).planId(其中的某个主键),下面是对应的配置文件:

  XML代码:

<class name="edu.bjtu.port.domain.DetailOfPlanForDayAndNight" table="PD1_DNPLAN_DTL" schema="SOMIS">  
           <composite-id name="id" class="edu.bjtu.port.domain.DetailOfPlanForDayAndNightId">  
               <key-property name="planId" type="java.lang.String">  
                   <column name="DNPLANID" length="8" />  
               </key-property>  
               <key-property name="detailId" type="java.lang.String">  
                   <column name="NO" length="2" />  
               </key-property>  
           </composite-id>  

  其实这个问题在Hibernate开发手册中有写,只是我还没看到,之所以想到这样写,完全是突然灵光乍现。不过看来手册还要继续好好研究啊~

实例:HQL语句中

public GenuineManagementStatic queryNewVersion(Integer softId) {
        List<GenuineManagementStatic> list = getSession().createQuery(" from " + this.clazz.getName() + " this WHERE this.softId=:softId  order by cast(version as integer) desc LIMIT 0,1")
                .setParameter("softId", softId)
                .list();
        if (list.size() > 0) {
            return list.get(0);
        }
        return null;
    }

 

HQL语句中数据类型转换

标签:数据   new   XML   create   hiberna   异常   desc   font   ring   

原文地址:http://www.cnblogs.com/goloving/p/7597674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!