java - 为什么休眠查询语言不支持 HQL 中的排序规则?
问题描述
我将使用数据库排序规则按列对表数据进行排序。
SELECT *
FROM country
ORDER BY code COLLATE utf8_swedish_ci DESC;
但是当我尝试使用 HQL 获取表数据时,由于 HQL 不支持此功能,因此出现异常。那么有没有办法和sql一样呢?而且虽然hibernate不支持所有的sql特性但是可能不支持collate特性是有逻辑的原因的。为什么休眠 HQL 不支持查询级别的整理功能?
解决方案
我们可以通过覆盖数据库方言的 renderOrderByElement 方法来做到这一点
@Override
public String renderOrderByElement(String expression, String collation, String order, NullPrecedence nulls)
{
expression = (new StringBuilder(expression)).append(" collate 'utf8_swedish_ci'").toString();
return super.renderOrderByElement(expression, collation, order, nulls);
}
推荐阅读
- sql-server - dapper multli 内连接和左连接映射
- angular - RxJS toArray 没有被调用
- linux - ssh over ssh 没有确认
- wordpress - Docker 和 BrowserSync
- javascript - 反应状态操作
- c# - SQL Server:使用 NULL FK 更快地删除行?
- c# - ImapX - 无法使用 Message.Download() 重新下载信件
- python - 绘制分位数、子图
- javascript - 在客户端验证时停止 RadioButtonList 回发
- javascript - 当用户点击它时转到下一个 div 持有者?