将Postgres JSONB查询与Spring Data和bind参数一起使用时失败,并显示InvalidDataAccessApiUsageException

vis*_*era 0 postgresql spring hibernate spring-data-jpa jsonb

我目前正在寻找例外的解决方案

org.springframework.dao.InvalidDataAccessApiUsageException: Parameter with that position [1] did not exist;
Run Code Online (Sandbox Code Playgroud)

我当前的@Query注释是:

@Query(
    nativeQuery = true, 
    value = "SELECT * FROM thgcop_order_placement WHERE \"order_info\" @> '{\"parentOrderNumber\":\" :param \"}'")
Run Code Online (Sandbox Code Playgroud)

我想它position [1] did not exist来自双引号加双引号加单引号。

我该如何进行这项工作?

该查询正在使用Postgres JSONB数据类型。列定义为ORDER_INFO JSONB

以下本地查询在Postgres客户端中可以正常运行:

SELECT * FROM thgcop_order_placement
WHERE "order_info" @> '{"parentOrderNumber":"ORD123"}'
Run Code Online (Sandbox Code Playgroud)

vis*_*era 6

除以下内容外,以上所有内容均不适用于我,

服务层代码:-

OrderInfo orderInfo = new OrderInfo();
orderInfo.setParentOrderNumber("ORD123");
....
String param = objectMapper.writeValueAsString(orderInfo);
List<Order> list = jpaRepository.getByParentOrderNumber(param);
Run Code Online (Sandbox Code Playgroud)

JpaRepository.java代码:-

@Query(nativeQuery = true, value = "select * from thgcop_order_placement where order_info @> CAST(:condition as jsonb)")
List<Order> getByParentOrderNumber(@Param("condition") String parentOrderNumber);
Run Code Online (Sandbox Code Playgroud)

这就是我达到结果的方式。我希望这将对所有热心者有帮助!

谢谢大家的帮助 !!!