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

具有命名参数的Hibernate本机查询问题

谭云瀚
2023-03-14
问题内容

我对Hibernate Native Query有问题。我有一个选择,它选择数组切片(PostgreSQL数据库)。

问题在于hibernate状态识别以下部分:来自“ SELECT my_array [1:300]
…”的“:300”作为命名参数,并且我得到以下异常:尚未设置所有命名参数。

我试图用’:’,’::’逃脱冒号(:),但没有成功。

Hibernate版本是3.2


问题答案:

我不使用PostgreSQL,但是如果您没有找到解决此问题的合适方法,则可以实现拦截器(扩展EmptyInterceptor)并在上修改查询onPrepareStatement(String sql)

这意味着您可能正在使用类似方法my_array[1|300]并对其进行重写,my_array[1:300]以解决命名参数问题。

编辑
:我不是100%确信上面的工作(重写本机SQL和查询解析器是否将允许特殊字符)。我仅在HQL和条件中完成了上述操作,在该条件中我将索引提示作为查询注释进行传递。



 类似资料:
  • 问题内容: 我想执行一个简单的本机查询,但是它不起作用: 为什么会出现此异常? 问题答案: JPA在本机查询中不支持命名参数,仅对于JPQL。您必须使用位置参数。 命名参数遵循第4.4.1节中定义的标识符规则。命名参数的使用适用于Java Persistence查询语言,而不是为本机查询定义的。 仅位置参数绑定可用于本机查询。 所以用这个 尽管JPA规范在本机查询中不支持命名参数,但某些JPA实现

  • 问题内容: 我想执行一个简单的本机查询,但是不起作用: 为什么会出现此异常? 问题答案: JPA在本机查询中不支持命名参数,仅对于JPQL。您必须使用位置参数。 命名参数遵循第4.4.1节中定义的标识符规则。命名参数的使用适用于Java Persistence查询语言,而不是为本机查询定义的。 仅位置参数绑定可用于本机查询。 所以用这个 尽管JPA规范在本机查询中不支持命名参数,但某些JPA实现(

  • 我试图在Hibernate中执行命名查询。查询在此映射文件中定义: MxePosition类如下: 我试图做的是让命名查询返回由另一列分组的一列的总和。然而,Hibernate抛出了一个错误,我怀疑这是因为查询结果不包含ID列。 有办法吗?必须能够在Hibernate中执行包含GROUP BY子句的查询,而不在结果中包含ID。 如果有更好的方法,我愿意接受其他不使用命名查询的建议。

  • 我有一个疑问 但是在使用hibernate执行查询时,我收到 org.hibernate.QueryParameterException:无法定位命名参数[age] 怎么了?

  • 问题内容: 使用Hibernate时,有什么方法可以在命名查询中指定可选参数(例如,从表单提供搜索参数而并非所有参数都是必需的)?我正在使用本机SQL查询,但该问题可能也适用于命名HQL查询。 我很确定对此的答案是“否”,但是我还没有在文档中找到确切的答案。 问题答案: AFAIK,没有这样的事情,因此您必须为此编写一个动态查询。也许看一下以前的答案,该答案显示了如何在HQL中执行此操作(您可以将