我对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中执行此操作(您可以将
为什么我会得到这个例外?