【问题标题】:JPQL how to search on JSON Map by KEY name or VALUEJPQL 如何通过 KEY 名称或 VALUE 搜索 JSON Map
【发布时间】:2021-01-17 11:20:02
【问题描述】:

假设我有下一个实体,受让人是 Map

@Getter
@Setter
@Entity(name = "Permission")
public class Permission {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // It's an enum of whatever values like (TEAM, USER, ..etc)
    private PermissionType type;

    @Type(type = "jsonb")
    @Column(name = "assignee", columnDefinition = "jsonb", nullable = false)
    private Map<String, Object> assignee;

}

如何使用 JPQL 通过受理人键或值搜索或选择权限?

这可能吗?

【问题讨论】:

    标签: hibernate jpql criteria


    【解决方案1】:

    您将需要一个特殊的 SQLFunction 实现,然后您可以从 JPQL 调用它。 Blaze-Persistence,一个在 JPA 之上运行的流畅的查询构建器库,提供了适用于各种数据库的开箱即用的功能:https://persistence.blazebit.com/documentation/1.6/core/manual/en_US/#json_get

    用法如下所示:

    FROM Permission p WHERE JSON_GET(p.assignee, 'jsonKey') = 'someValue'

    【讨论】:

      猜你喜欢
      • 2014-02-11
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2018-06-30
      • 1970-01-01
      • 2015-03-22
      • 2014-10-24
      • 1970-01-01
      相关资源
      最近更新 更多