当前位置: 首页 > 知识库问答 >
问题:

带有hql的QuerySyntaxException

万俟玉书
2023-03-14

在tomcat上部署以下查询时出现异常:

@Query("select max(cast(substring(r.reference,9,4) as decimal(4,0))) from RequestDbo r  where substring(r.reference,0,9) = :referenceRoot")
Long getMaxReference(@Param("referenceRoot") String referenceRoot);


例外情况是:

组织。冬眠hql。内部的ast。QuerySyntaxException:应为CLOSE,在第1行第54列附近找到“(”[从RequestDbo r中选择max(cast(substring(r.reference,9,4)作为decimal(4,0))),其中substring(r.reference,0,9)=:referenceRoot]

尽管直接在sql server上执行查询是可以的

我的hql中没有语法错误<有什么想法吗?

共有1个答案

葛浩阔
2023-03-14

Hibernate不支持在JPQL查询中将这种转换为十进制(4,0)。这里有四个选项作为解决方法:

  1. 将数据加载到Java,然后获得最高值
  2. 使用Java类转换所需的值,然后在JPQL查询中调用其构造函数
  3. 使用本机SQL
  4. 创建一个用于转换所需值的SQL函数,并在查询的最大值内调用此函数

我也推荐你看看这个问题这个问题。祝你好运!

 类似资料:
  • 问题内容: 有没有一种方法可以像我向它们添加(NOLOCK)提示一样运行这些查询? 问题答案: 如果您确实需要此功能,则可以执行以下操作: 这与nolock相同。 在执行此操作之前,请认真思考是否要进行脏读。人们大多数时候这样做是因为这是他们一直以来所做的事情,而不是因为这是正确的事情。特别是,这不适用于缓存。 实际上,该线程会涉及一些问题。在决定之前,请仔细阅读。

  • 问题内容: 根据Hibernate文档的这一部分,我应该能够查询HQL中的任何Java类。 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql- polymorphism 不幸的是,当我运行此查询时… 我收到消息“ [未映射事务[从事务trans,其中trans.envelopeId =

  • 我有下面的hql查询。我想选择而不锁定表部门,员工,以便其他查询并发从这些表中检索记录,即使以下查询正在运行/执行 我试过了,但还是有锁

  • 我在连接2表中有一个查询,其可能为null或值。 如果第一个表中的值为null,则必须检查第二个表中的值是否为'isnull',但如果值为value,则必须检查 我如何用HQL中的“case when”做到这一点?

  • 问题内容: 根据Hibernate文档的这一部分,我应该能够查询HQL中的任何Java类。 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql- polymorphism 不幸的是,当我运行此查询时… 我收到消息“未映射事务[[从事务trans,其中trans.envelopeId =:

  • 问题内容: 我正在开发一个需要搜索功能的应用程序,我想编写根据参数动态创建的HQL查询。目前我有4个参数,而根据用户想要的搜索方式,所有参数都是必需的,或者1或2或3个参数是必需的。 这是我对所有4个参数的常规查询,现在我必须编写一个搜索查询,在其中使用多个可选参数,如何使用可选参数进行此查询?请将我的查询转换为动态可选参数查询?谢谢 问题答案: 我这样自己转换查询