问题描述
我有一个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 (将#修改为@)