【发布时间】:2021-10-09 09:24:42
【问题描述】:
当我在我的 springboot 项目中运行以下查询时
select * from activity.activity where data->'userinfo' @> '[{"name": :username}]'::jsonb
我收到此错误“无法找到命名参数 [用户名],需要 [] 之一”。
表格有一个数据列,值为{"userinfo": [{"name": "john"},{"lastname":"cena"}]}
可能是什么问题?
PS:我正在使用实体管理器执行查询以创建本机查询,然后调用 query.getResultList()。
代码:
StringBuffer q = new StringBuffer("select * from activity.activity where data->'userinfo' @> '[{\"name\":").append(" :username").append("}]'::jsonb");
Query query = null;
query = em.createNativeQuery(q.toString(), Activity.class);
query.setParameter("username", getActivityDataRequest.getUserName());
return query.getResultList();
【问题讨论】:
-
你如何执行这个查询?
-
@SimonMartinelli 我正在使用实体管理器执行查询以创建本机查询,然后调用 query.getResultList()。我刚刚也用此信息更新了问题
-
能否请您添加与查询相关的完整代码?目前还不清楚绑定过程中用户名是如何传递的。
-
没有引号?我可以在这里看到它们:
'[{"name": :username}]'. -
@SalmanA 命名参数不在引号内,这意味着它不像
'[{"name": ":username"}]'。注意 :username 周围的引号。我看到了人们遇到的其他 stackoverflow 问题,显然这肯定行不通。
标签: java sql postgresql spring-boot hibernate