hibernate - JPQL 如何通过 KEY 名称或 VALUE 搜索 JSON Map
问题描述
假设我有下一个实体,受让人是 Map<String, Object>
@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 通过受让人键或值搜索或选择权限?
那可能吗?
解决方案
您将需要一个特殊的 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'
推荐阅读
- javascript - 在 catch 中发生错误后停止
- json - 将数据加载到 json 文件中包含多于 1 列的雪花表中
- fortran - 如何在 Ubuntu 20.04 中安装 FGSL?
- android - Android:如何在添加的按钮之间添加空格
- laravel - 无法在 Google Cloud SQL 中运行迁移
- python - 将套接字连接到服务器的Python问题
- android - 是否有一种惯用的方法来处理 if else 分支中的空值?
- r - 将多个列表列合并为R中的一个列表列?
- c - 如何查看 libc 版本?
- node.js - 使用 REST API 从 OneDrive 下载文件