如何在Spring Boot中获取postgres jsonb列的嵌套对象的值

San*_*ani 5 hibernate spring-data-jpa spring-boot jsonb postgresql-9.4

我已经使用 vlad mihalcea 的依赖项将 json 值存储在表中。

表名:valuation_report JsonbColumnparameters属性名在pojo中为params

能够获取单个对象的值,例如address =“Address1”

{"address":"Address1","nestedObj":{"firstName":"Sanjay"}}
Run Code Online (Sandbox Code Playgroud)

为了获取地址,我已经实现了规范和 @Overriden Predicate 方法,例如

@Override
public Predicate toPredicate(Root<ValuationReport> root, CriteriaQuery<?> query, CriteriaBuilder cb)
{
return cb.equal(cb.function("jsonb_extract_path_text", String.class,root.<String>.get("params"),cb.literal(this.locale)), this.fieldToSearch);
}
Run Code Online (Sandbox Code Playgroud)

但现在我想找到 NestedObj 的值,就像nestedObj 的名字是 Sanjay 一样。

{"nestedObj":{"firstName":"Sanjay"}}
Run Code Online (Sandbox Code Playgroud)

请帮助我,我用手机写了所有这些,很抱歉问题格式不正确。

小智 3

我已经使用 @Query 注释完成了此操作,但仍然有一种方法可以处理条件。我将显示我的查询来执行此操作

@Query(value = "select vr FROM ValuationReport vr  where jsonb_extract_path_text(vr.params,:subParam ,:key)=:value")
    List<ValuationReportJSON> getEntities(@Param("subParam") String subParam,@Param("key") String key,@Param("value") String value);
Run Code Online (Sandbox Code Playgroud)

希望这有效。