一尘不染

如何在hql中使用字符串左函数

hibernate

我有这样的SQL查询

select column from table where path = left('INPUTSTRING', length(path));

并试图像这样在hql中实现它,

  return session.createQuery("from Table where Path = left(:input, length(Path))").
                            query.setParameter("input", inputPath).
                            .list();

并得到这样的错误

Caused by: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: left near line 1

如何做到这一点?hql中对应的字符串函数是什么?是否有使用标准查询API的解决方案?


阅读 455

收藏
2020-06-20

共1个答案

一尘不染

是的,left()不支持MySQLDialect。请参阅API文档上HQL支持的功能列表。

现在您剩下了2个选项。

  1. 使用session.createSQLQuery()方法。
  2. Dialect通过扩展MySQLDialect和创建函数来创建自己的类。这是在hibernate论坛上说这里在博客中很好地解释这里
2020-06-20