你只能用在oracle中 如果用在mysql中就要使用mysql的函数

解决方案 »

  1.   

    嗯 我尝试使用了MYSQL的IFNULL代替NVL没有通过。
    Oracle  HQL:select  nvl(max(menu.code),0)  from  Menu  menu  where  menu.idClass  =  ?    
    and  instr(menu.code,'001')  =  1; 
    一起上ORACLE的HQL怎样转成MYSQL的HQL?
    请各位大侠指点。
      

  2.   

    你写的是sql,不是HQL
    HQL不是产品相关的
    空值问题大可不必处理,参看下HQL的具体设定就行了,也就是说用真正的HQL写。
      

  3.   

    楼上没看清问题“本人在以前项目(使用Hibernate和Oracle数据库)”,
    这不是产品相关的问题,以上语句中的“Menu”就是一个POJO类。
    如果是SQL查询换成相应的MYSQL聚合函数当然不会有问题,
    问题的关键是Hibernate中对MYSQL聚合函数的支持,比如是否支持“IFNULL”、“INSTR”等。
      

  4.   

    本人尝试使用IFNULL代替NVL但是抛异常。
      

  5.   

    你写的是sql,不是HQL用真正的HQL写的Hibernate会自己转会为相应数据库的SQL,当然不能用那些不标准的函数.