HQL语句中数据类型转换

  我们需要从数据库中取出序号最大的记录,想到的方法就是使用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;
    }
时间: 2024-08-03 13:59:20

HQL语句中数据类型转换的相关文章

Java中数据类型转换

1.Java的数据类型分为三大类 布尔型,字符型和数值型 其中数值型又分为整型和浮点型 2.Java的变量类型 布尔型 boolean 字符型 char 整型    byte,short,int,long 浮点型 float,double 3.数据类型转换 Java中数据类型转换分为三种,简单数据类型转换,字符串与其他类型转换,其他实用数据类型转换 (1)简单数据类型转换 在Java中,整型,实型,字符型被视为简单数据类型. 这些类型级别从低到高:(byte,short,char)-> int

Sql 查询语句中的类型转换

1: CAST ( (SalesAgreement.HTPrice / 10000) as decimal(18,2) ) as HTPrice 2: 转换货币如:10,000.00 select '¥'+convert(nvarchar,cast(1343432432434.8 as money),1) Sql 查询语句中的类型转换

JS中数据类型转换

JS中数据类型转换汇总 JS中的数据类型分为 [基本数据类型] 数字 number 字符串 string 布尔 boolean 空 null 未定义 undefined [引用数据类型] 对象 object - 普通对象 - 数组对象 (Array) - 正则对象 (RegExp) - 日期对象 (Date) - 数学函数 (Math) ... 函数 function 真实项目中,根据需求,我们往往需要把数据类型之间进行转换 把其它数据类型转换为number类型 1.发生的情况 isNaN检测的

Java基础知识强化22:Java中数据类型转换

数据类型转换: (1). 自动转换 低级变量可以直接转换为高级变量,这叫自动类型转换.比如: byte b: int b:  long b:  float b:   double  b: 上面的语句可以在Java中直接通过. (2).如果低级类型为char型,向高级类型(整型)转换时候,会转换为对应的ASCII码值,例如: char c ='c':  int i = c:  System.out.println("output:"+i): 输出: output:99 (3).对于byt

Javascript中数据类型转换那些事

在js中,总的来说数据类型分为两大类,一类是原始值类型的,一类是引用类型的.原始值类型的包括:字符串(String) .数字(Number) .布尔值(Boolean) 以及两个特殊的值 null 和 undefined .引用类型的主要是指对象,在js中,对象的范围很广,甚至有js中一切都是对象这样的说法.对象可以分为 对象(Object) 以及更具体的数组(Array) . 函数(Function) 等类型.要注意的是,js中typeof运算符返回的类型只有:sting.number.boo

JavaScript中数据类型转换总结

在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = "123"; a = Number(a); 注意: a)如果转换的内容本身就是一个数值类型的字符串,那么将来在转换的时候会返回自己. b)如果转换的内容本身不是一个数值类型的字符串,那么在转换的时候结果是NaN. c)如果要转换的内容是空的字符串,那以转换的结果是0. d)如果是其它的字符,那么将来在转换的时候结果是NaN. 2)pars

Arduino中数据类型转换 float/double转换为char 亲测好使,dtostrf()函数

如何轻松玩转Arduino单片机,当我在进行数据转换的时候,遇到了问题,尝试了C语言和C++中的好多函数,都没有达到将float型数据转换为char型的目的.苦苦查阅资料后,终于找到了一个大神级函数!!!dtostrf(),可以轻松实现数据类型from   float   to  char .            get it 格式如下: char* dtostrf(double _val,signed char _width, unsigned char prec, char* _s) 参数

Arduino中数据类型转换 int转换为char 亲测好使,itoa()函数

由于博主最近在做一个项目,需要采集不同传感器的数据,包括float型的HCHO,以及int型的PM2.5数据.但是最终向服务器上传的数据都得转换为char型才能发送,这是借鉴了一个github上面的实例实现了在Arduino上部署socket使之与服务器进行交互. github实例如下: https://github.com/washo4evr/Socket.io-v1.x-Library 在本项目中多次使用了数据类型转换,前文提到了float和double类型转换为char,如下:http:/

Hibernate的HQL语句中定位参数和具名参数传参

HQL查询: 1.有关hql 查询语句中的问好参数形式,如果出现多个问号,这对后面参数就比较麻烦. 如:from Student  student where student.name = ? and student.age=?.... 对这样的赋值,容易出错 可以采用另一种赋值的方法 如:from Student  student where student.name =:var1 and student.age=:var2.... query.setString("var1",&q