当前位置: 首页 > 面试题库 >

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

朱硕
2023-03-14
问题内容

我有这样的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的解决方案?


问题答案:

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

现在您剩下了2个选项。

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


 类似资料:
  • 问题内容: 我在Java中使用String.format()尝试模拟C语言中可用的printf()控制通道。我了解如何指定将字符串放置在20个字符,5个,2个…的字段中, 3位小数,2位等。但是,字符串在其字段中右对齐打印。 如何将弦左对齐? 这里是一个可能的输出,我想修改左对齐的例子,并在各自的领域。 *注意:请将“-”视为空白 问题答案: 与printf相同-使用格式的修饰符

  • 问题内容: 我上课像 如何查询具有以下角色的所有对象 编辑: 我正在使用Hibernate 3.0.5。并尝试了大多数明显的方法。 给出JDBC错误。 给出类强制转换异常 我认为这可能与特定版本的hibernate有关。 问题答案: 我找到了解决方案: hql函数value()以某种方式必须对此有所帮助,您也可以尝试使用它,但是上面的hql查询对我有用。

  • 问题内容: 几天前,我在网上搜索时,发现了一篇有关python词典的有趣文章。这是关于使用字典中的键来调用函数。在那篇文章中,作者定义了一些函数,然后定义了一个字典,其键与函数名完全相同。然后,他可以从用户那里获得输入参数并调用相同的方法(类似于实现大小写中断)。此后,我意识到同样的事情,但有所不同。我想知道如何实现这一目标。如果我有一个功能: 现在,如果我有这样的字符串: 有没有一种方法可以执行

  • 问题内容: 与hibernate和spring社交一起工作, 我正在尝试通过电子邮件地址查询数据库。当我执行此查询时: 公共帐户findAccountByUsername(String username){ = “+username; Query query = session.createQuery(selectQuery); @SuppressWarnings(“unchecked”) Lis

  • 我有一个未知长度(但不是空)的字符串str和给定的最大长度len,这必须适合。我想做的,就是把绳子剪断。 我知道我可以使用 但这不会派上用场,如果我试图像这样编写堆叠代码 我知道我可以编写自己的函数,但我更喜欢现有的解决方案。Java 中是否存在现有的左()函数?

  • 问题内容: 这是我的代码: 但显示错误: 那我该怎么办, 谢谢 问题答案: 带有字符串参数的参数仅用于表达式。如果要执行语句,请使用: 但是在执行此操作之前,请考虑是否真的需要动态代码。到目前为止,大多数事情都可以做到。