to_char()

时间:2017-12-14 13:52:49

标签: postgresql hibernate

所以,我正在使用Hibernate预处理语句来执行未知参数的未知SQL。 Prepared语句的参数设置如下:

statement.setObject(index, param.getValue(), param.getType());
//type is from java.ql.Types

在大多数情况下它运作得很好,但我有一个角落案例我既不能忽视也不能修复。 在SQL的情况下:

select to_char(:param, 'DD/MM/YYYY') from table;

Hibernate无法解析参数类型(对于statement.setDate(...)也是如此,因此它可能与设置参数无关)。 它返回以下错误:

  

“错误:函数to_char(未知,未知)不是唯一的提示:可以   不选择最佳候选功能。您可能需要添加显式   类型演员。位置:8“

类似的错误我可以像这样得到SQL,当我将参数类型设置为Date(但它适用于Number)

select :param
  

“错误:无法确定参数参数的数据类型”

有什么方法可以解决这个问题吗?

我知道的一种方法是手动演员,f。即

select to_char(cast(:param as Date), 'DD/MM/YYYY') from table;

但是由于应用程序可以获得任何类型的选择SQL,这是非常有问题的,因为任何一个客户端都需要执行此操作,或者需要实现一些转换系统,这将根据参数编辑SQL(这将花费很多时间,主要是在测试中)。还有更通用的方法吗?

0 个答案:

没有答案