You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让PSQL/HSQL中的JSON运算符(->)在PanacheEntityBase中生效?

解决PanacheEntityBase中jsonb->运算符报错的问题

在Panache的查询(JPQL/HQL)中无法直接使用PostgreSQL的->运算符,因为JPQL不支持数据库特定语法,你可以用PostgreSQL内置的等效函数替代:

  • 若要提取jsonb字段并返回jsonb类型,对应->的等效函数是jsonb_extract_path,用法示例:

    // 原控制台可用SQL:SELECT data->'key' FROM table
    // Panache中替换写法:
    List<JsonObject> result = YourEntity.find("SELECT jsonb_extract_path(data, 'key') FROM YourEntity").list();
    
  • 若需要提取后返回文本类型,对应->>的等效函数是jsonb_extract_path_text,用法:

    List<String> result = YourEntity.find("SELECT jsonb_extract_path_text(data, 'key') FROM YourEntity").list();
    

如果要嵌套提取(比如原SQL的data->'parent'->'child'),可以给jsonb_extract_path传递多个参数:

// 等效于 data->'parent'->'child'
List<JsonObject> result = YourEntity.find("SELECT jsonb_extract_path(data, 'parent', 'child') FROM YourEntity").list();

如果需要保证跨数据库兼容,可使用JPA的FUNCTION语法包裹函数调用:

List<JsonObject> result = YourEntity.find("SELECT FUNCTION('jsonb_extract_path', data, 'key') FROM YourEntity").list();

内容的提问来源于stack exchange,提问作者codingbellinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:50:43