【发布时间】:2018-05-28 03:49:08
【问题描述】:
我目前正在寻找异常的解决方案
org.springframework.dao.InvalidDataAccessApiUsageException: Parameter with that position [1] did not exist;
我目前的@Query注解是:
@Query(
nativeQuery = true,
value = "SELECT * FROM thgcop_order_placement WHERE \"order_info\" @> '{\"parentOrderNumber\":\" :param \"}'")
我猜position [1] did not exist 来自于它的双引号加双引号加单引号。
我怎样才能做到这一点?
查询使用 Postgres JSONB 数据类型。列定义为ORDER_INFO JSONB
以下本机查询在 Postgres 客户端中运行良好:
SELECT * FROM thgcop_order_placement
WHERE "order_info" @> '{"parentOrderNumber":"ORD123"}'
【问题讨论】:
-
Postgres 是否支持这种方式的绑定变量?我认为
:param周围的引号是多余的。 -
你能包含完整的堆栈跟踪吗?
-
@JensSchauder,如果我们考虑一下我在“更新”块中提到的纯 SQL 查询,那么在 1 点。这是完全正确的。如果我尝试删除引号,那么 Postgres 会出错。这就是为什么我坚信它应该是必需的。
标签: spring postgresql hibernate spring-data-jpa jsonb