为了账号安全,请及时绑定邮箱和手机立即绑定

如何在jpa存储库中使用jsonb_set来传递动态字符串?

如何在jpa存储库中使用jsonb_set来传递动态字符串?

狐的传说 2024-01-28 17:06:50
postgres 命令在 pgadmin4 中有效,但在 java 代码中无效    String toAdd = "case_data->'business' || '{\"l\":\"cpaz\"}'";this.orchestrateRepo.updateColumn(toAdd, case_id); @Query(value = "Update onboarding.onboarding_cases set case_data = jsonb_set(case_data, '{business}', ?1 )where case_id=?2", nativeQuery = true)        void updateColumn(String toAdd, BigInteger case_id);我将一个字符串传递给Add,我想动态插入该值..但它给出了错误org.postgresql.util.PSQLException: ERROR: function jsonb_set(jsonb, unknown, character varying) does not exist  Hint: No function matches the given name and argument types. You might need to add explicit type casts.如果我这样写,查询就可以正常工作 @Query(value = "Update onboarding.onboarding_cases set case_data = jsonb_set(case_data, '{business}', case_data->'business' || '{"t":"cpaz"}' )where case_id=?2", nativeQuery = true)        void updateColumn(BigInteger case_id);我应该怎么办
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

添加演员阵容'{business,key)} AS TEXT[]'


例子


@Query(value = "Update onboarding.onboarding_cases set case_data=jsonb_set(case_data,CAST('{business,key)}' AS TEXT[]),to_jsonb(?1)) where case_id=?2", nativeQuery = true)

void updateColumn(String toAdd, BigInteger case_id);


查看完整回答
反对 回复 2024-01-28
?
墨色风雨

TA贡献1853条经验 获得超6个赞

终于解决了这个问题。为那些寻找的人发布答案。


只传递键值。


String toAdd = "value";

将查询更改为:


@Query(value = "Update onboarding.onboarding_cases set case_data=jsonb_set(case_data,'{business,key)}',to_jsonb(?1)) where case_id=?2", nativeQuery = true)

    void updateColumn(String toAdd, BigInteger case_id);


查看完整回答
反对 回复 2024-01-28
  • 2 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信