如何解决JPA条件构建器,如何获取jsonb列中列表的第一个元素
我有一个PostgreSQL数据库,其表Registry
的列json_data
的类型为jsonb
。 JSON看起来像:
{
id: 1,users: [
{name : "John",surname: "Doe",metadata: {createdAt: "some LocalDateTime value"}}
]
}
重点是,我需要从列表“用户”中获取第一个元素,然后从“元数据”中获取值“ createdAt”。
data->'users'->0->'metadata'->>'createdAt'
我需要使用JPA规范和条件构建器,检查createdAt
是否是greaterThanOrEqualTo
某个日期。
我已经创建了执行此操作的功能:
private val startRange: (root: Root<RegistryEntity>,criteriaBuilder: CriteriaBuilder,filtrationCriteria: FiltrationCriteria) -> Predicate =
{ root,criteriaBuilder,filtrationCriteria ->
val jsonPath = criteriaBuilder.function("jsonb_extract_path_text",String::class.java,root.get<String>("jsonData"),criteriaBuilder.literal("users"),criteriaBuilder.literal("0"),criteriaBuilder.literal("metadata"),criteriaBuilder.literal("createdAt")).`as`(LocalDateTime::class.java)
criteriaBuilder.greaterThanOrEqualTo(jsonPath,filtrationCriteria.startDate)
}
不幸的是我遇到错误:
CAST函数应仅包含2个参数
您知道如何解决该问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。