【发布时间】:2017-10-09 13:45:39
【问题描述】:
我在获取这个针对 postgres 9.4 实例的本机查询时遇到问题。
我的仓库有一个方法:
@Query(value = "SELECT t.* " +
"FROM my_table t " +
"WHERE t.field_1 = ?1 " +
"AND t.field_2 = 1 " +
"AND t.field_3 IN ?2 " +
"AND t.jsonb_field #>> '{key,subkey}' = ?3",
nativeQuery = true)
List<Entity> getEntities(String field1Value,
Collection<Integer> field3Values,
String jsonbFieldValue);
但日志显示:
SELECT t.* FROM my_table t
WHERE t.field_1 = ?1
AND t.field_2 = 1
AND t.field_3 IN ?2
AND t.jsonb_field ? '{key,subkey}' = ?3
我得到了这个例外:
内部异常:org.postgresql.util.PSQLException:无值 为参数 2 指定。
我在方法调用之前直接记录了参数,它们都是提供的。
我不确定为什么#>> 在日志中显示?。我需要逃避#>>吗?我需要为IN 格式化集合吗?我需要转义 json 路径吗?
当我直接对数据库执行查询时,它可以工作。示例:
SELECT *
FROM my_table t
WHERE t.field_1 = 'xxxx'
AND t.field_2 = 1
AND t.field_3 IN (13)
AND t.jsonb_field #>> '{key,subkey}' = 'value'
【问题讨论】:
-
你能解决这个问题吗?如果是其中一个答案,你能选择一个吗?如果没有,您能否发布您用作答案的解决方案
-
@JoeG 看起来它不适用于 eclipselink。我最终走了一条不同的路线。
标签: spring postgresql jpa spring-data-jpa