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

to_char函数引发Hibernate异常

唐裕
2023-03-14

我试图在grails域对象上执行sql语句。当直接在db(h2)上执行时,is工作正常。

Call.executeQuery "select to_char(date,'DD') from Call"

通过hibernate,我得到:

没有节点的数据类型:org.hibernate.hql.internal.ast.tree.MethodNode-[METHOD_CALL]MethodNode:'('-[METHOD_NAME]IdentNode:'to_char'{originalText=to_char}-[EXPR_LIST]SqlNode:'exprList'-[DotNode:'call0.date'{propertyName=date,dereferenceType=PRIMITIVE,getPropertyPath=date,path={合成别名}.date,tableAlias=call0|,className=com.olamagic.Call,classAlias=null}|-[IDENT]IdentNode:'{synthetic alias}'{originalText={synthetic alias}}}}-[IDENT]IdentNode:'date'{originalText=date}-[QUOTED_STRING]LiteralNode:'DD'

共有1个答案

贺运良
2023-03-14

当您直接在H2上执行SQL语句时,您正在执行H2的SQL。方法执行HQL,而不是sql。

HQL没有to_char()函数。所以得到等效的结果更复杂:

select case when day(date) > 9 then cast(day(date) as text) else concat('0', day(date)) end from Call

如果您不介意将日期作为整数,那么查询将简化为:

select day(date) from Call
 类似资料:
  • 我为一个更大的应用程序构建了一个库/模块,它从一个函数中抛出一个异常。如果找不到文件或者文件包含错误的格式,就会抛出异常。 该方法类似于: 异常将终止我的模块,因为它将被捕获在使用我的模块的应用程序中,但没关系,因为格式不好。 我想知道的是——像这样从递归函数中抛出异常是一种不好的做法吗?

  • org.h2.jdbc.JdbcSQLException:未找到函数"TO_CHAR";SQL声明:我使用的是oracle 12c数据库和spr java框架。但是这个问题与oracle数据库有关。这是sql查询。 如何修复此错误?请帮帮我。谢谢这是我的密码。 这是getConnection函数。 这是AbstractDao。Java语言

  • 在下面的查询中,我使用了strftime函数来获取字符串格式的日期。它在sqlite数据库中运行良好。但是,当数据库更改为进程时,它抛出了一个错误,即“SQLSTATE[42883]:未定义函数:7错误:函数strftime(未知,没有时区的时间戳)不存在” 下面的代码在SQLite中工作,但在Postgres数据库中引发了一个错误

  • 我有一个异步函数,它将一些数据插入数据库(使用Mariadb)。由于重复的唯一键,此插入可能会失败,因此它会抛出错误(实际上确实如此),但当我尝试再次抛出它以通过Promise捕获它时,它不起作用;它似乎总是以成功的案例结束,即使它抛出了错误。 我尝试改变then/catch顺序,我使用了< code > reject(err);而不是< code >抛出err但是这些都不起作用。 这是POST声

  • 问题内容: 当我尝试使用RaiseError时,出现以下编译问题 消息443,级别16,状态14,过程ConvertSessionToCurr,第19行在函数中无效使用了副作用运算符’RAISERROR’。 那么我们如何处理函数中的异常/将其更改为out参数存储的proc?听起来真是太可惜了! 问题答案: 选项: 返回NULL或一些前哨值 使用存储过程 使其内联代码 我的想法是,如果您在UDF中需