hql语句按照汉字首字母进行排序

qq_39323778 2017-08-08 02:49:42
@Query("select st.id,st.storeName,st.city,st.businessHours,st.startTime,st.endTime,st.enable FROM Store st WHERE st.delFlag = 0 ORDER BY CONVERT(st.storeName USING gbk ) ASC ")
在idea中执行这条语句总是报 unexpected token: USING 但是在MySQL数据库中查询就没有问题 求解
...全文
615 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pppprograming 2017-08-11
  • 打赏
  • 举报
回复
使用 本地查询。 native SQL Query 不行吗, 非得使用 HQL??
浮云若水 2017-08-11
  • 打赏
  • 举报
回复
你用的hibernate 几? 用StringType.INSTANCE 试试,估计是你hibernate版本过高的原因
引用 5 楼 qq_39323778 的回复:
[quote=引用 3 楼 a276202031 的回复:] 修改mysql方言注册函数

public class MySQLExtendDialect extends MySQLDialect {  
   
    public MySQLExtendDialect(){  
        super();  
        registerFunction("convert_gbk",   
                 new SQLFunctionTemplate(Hibernate.STRING, "convert(?1 using gbk)") );  
    }  
}
然后把你的 排序那改为order by convert_gbk(st.storeName ) asc 就好了
为什么Hibernate.STRING 这个地方显示cannot resolve symbol string[/quote]
qq_39323778 2017-08-11
  • 打赏
  • 举报
回复
引用 3 楼 a276202031 的回复:
修改mysql方言注册函数

public class MySQLExtendDialect extends MySQLDialect {  
   
    public MySQLExtendDialect(){  
        super();  
        registerFunction("convert_gbk",   
                 new SQLFunctionTemplate(Hibernate.STRING, "convert(?1 using gbk)") );  
    }  
}
然后把你的 排序那改为order by convert_gbk(st.storeName ) asc 就好了
为什么Hibernate.STRING 这个地方显示cannot resolve symbol string
qq_39323778 2017-08-08
  • 打赏
  • 举报
回复
引用 3 楼 a276202031 的回复:
修改mysql方言注册函数

public class MySQLExtendDialect extends MySQLDialect {  
   
    public MySQLExtendDialect(){  
        super();  
        registerFunction("convert_gbk",   
                 new SQLFunctionTemplate(Hibernate.STRING, "convert(?1 using gbk)") );  
    }  
}
然后把你的 排序那改为order by convert_gbk(st.storeName ) asc 就好了
好的,我改一下,谢谢
浮云若水 2017-08-08
  • 打赏
  • 举报
回复
修改mysql方言注册函数

public class MySQLExtendDialect extends MySQLDialect {  
   
    public MySQLExtendDialect(){  
        super();  
        registerFunction("convert_gbk",   
                 new SQLFunctionTemplate(Hibernate.STRING, "convert(?1 using gbk)") );  
    }  
}
然后把你的 排序那改为order by convert_gbk(st.storeName ) asc 就好了
浮云若水 2017-08-08
  • 打赏
  • 举报
回复
因为数据库是支持CONVERT(st.storeName USING gbk ) 这个函数的 但是hibernate暂时还不支持该函数 所以呢,要自己修改mysql的方言包注册一个这函数
一个帅逼 2017-08-08
  • 打赏
  • 举报
回复
因为HQL不支持这个函数

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧